getting large and small icons for TImageList?

What is the best way to get large and small icons from externa files for
building  a custom TImageList?
I need to display a list of executables (Delphi executables), in a
listview object and need to pull the icons from the distributed exe
files (without opening them first).

ExtractIcon appears to get the small icon.

I can't use loadimage because it doesn't support the loadfromfile option
under NT.

Do I need to use ShGetFileInfo? I'm trying to avoid using the shell
functions.

This needs to work on WIN95, 98, NT4 and NT5. I know,  what a concept, a
single api that's standard across multiple Microsoft products!!!