Schön wäre eine Konfigurationslösung. Am liebsten würde ich 1:1 das Icon der normalen Windows-Links übernehmen.
Guckst du unter HKEY_CLASSES_ROOT\lnkfile\shellex\IconHandler ... da siehst du, daß für die Shortcuts eine Shellerweiterung verantwortlich ist. In shell32.dll, wenn ich mich recht entsinne, findest du das gewünschte Symbol, welches du selbstverfreilich auch von deiner Erweiterung aus laden kannst. Die Kunst wäre nun, für jede Windows-Version den korrekten Index des Symbols zu finden, da dieser variieren kann.
Für den Fall, daß eine Konfigurationslösung gewünscht ist, könnte ich ohnehin nicht mehr weiterhelfen, da ich nicht weiß wie das geht (wenn es gehen sollte). Shellerweiterungen habe ich hingegen schon geschrieben und gewartet.
Bzw. könnte ich mit einer ShellErweiterung mein Icon pro Datei komplett selbst zeichnen?
Im Endeffekt ja. Falls du TortoiseGit/
SVN/Hg benutzt, kannst du dir das live anschauen indem du ein Repository auscheckst und dann eine oder mehrere Dateien veränderst. Das Overlay-Icon sollte sich entsprechend des neuen Status dann ändern.
Besser als die Dokumentation von
MSDN finde ich übrigens
die Serie von Michael Dunn (am Ende des Artikels geht es jeweils zum Folgeartikel). Allerdings sollte man zumindest genug C++ verstehen um die Konzepte in Delphi zu übertragen.
Achtung: Shellerweiterungen werden für alles mögliche verwendet. Bspw. um einen neuen Namensraum im Dateimanager einzublenden oder eben für Overlay-Icons, aber auch um die Kontextmenüs je nach "Datei" anzupassen. Auch verwenden alternative Dateimanager (also nicht nur Windows Explorer) vielfach Shellerweiterungen. Darauf sollte man Rücksicht nehmen.