Die Suche im Explorer hat leider nix ergeben, außer der Tatsache, daß dieser eine Imagelist aus Shell32 zu bekommen scheint ... und das war dann auch der Hinweis:
Im PSDK steht unter SHGetFileInfo(): Note Once you have a
handle to a system image list, you can use the Image List
API to manipulate it like any other image list. Because system image lists are created on a per-process basis, you should treat them as read-only objects. Writing to a system image list may overwrite or delete one of the system images, making it unavailable or incorrect for the remainder of the process.
Was lernen wir daraus? Richtig, es gibt eine "System Image List" (genaugenommen
mindestens eine!).
Den "Namen" einer undokumentierten Funktion, welche nur über ihre Ordinal exportiert wird,
Shell_GetImageLists() bekommen wir durch Vermutungen und Suche im
PSDK ... wie wo watt? Ich kann hier einfach den Funktionsnamen angeben und außerdem verlinke ich
MSDN?! Korrekt. Dank der Prozesse gegen MS haben die ja bekanntlich in den letzten Jahren einige Funktionen offengelegt.
Angeblich gibt es die erst ab XP, aber
andere wissen da besseres zu berichten. Diese Funktion existiert bereits in Windows 95. Mit etwas weiterer Suche im
PSDK finden wir dann ein Interface [
msdn]IShellIcon::GetIconOf[/
msdn], welches uns weitere Auskunft erteilt (nämlich zu den Indeces der Icons):
Zitat:
Address of the index of the icon in the system image list. The following standard image list indexes can be returned.
- 0 Document (blank page, not associated)
- 1 Document (with data on the page)
- 2 Application (file extension must be .exe, .com, or .bat)
- 3 Folder (plain)
- 4 Folder (open)
Prinzipiell sollte damit die Frage geklärt sein. Die entsprechende Funktion dynamisch zu importieren solltest du ja draufhaben, FriFra. Ob man diese von Catch22 (der übrigens ein ähnliches, aber besseres, Tool wie EDA geschrieben hat) genannte Funktion FileIconInit() auf NT wirklich braucht, müßtest du dann selber austesten.
Hoppala, bei der nachträglichen Suche nach
Shell_GetImageLists Delphi kam nur ein einziger Treffer raus ... aber der hat's in sich. Wäre fast wert einen Hinweis darauf in die Codelib aufzunehmen:
http://www.whirlingdervishes.com/nse...les/source.php