Hallo!
Das Thema mit dem Iconoverlay lässt mich nicht in Ruhe. Ich hab' weitergesucht und herausgefunden, dass es scheinbar mit der Funktion SHGetFileInfo möglich ist, an den Index des Overlay-Icons heranzukommen (nun ja, das sagt zumindest die
MSDN ...). Dabei muss als Flag SHGFI_OVERLAYINDEX angegeben werden. Dieses Flag ist scheinbar in Delphi nicht definiert. Nach einiger Suche in Google fand ich dann heraus, dass diese Flag dem Wert 40 entspricht.
Also sollte die folgende Funktion prinzipiell funktionieren:
Code:
Function TForm1.GetOverlayImageIndex(sFilename: String): Integer;
var
shfi: TSHFileInfo;
begin
try
SHGetFileInfo( PChar( sFilename ), 0, shfi, Sizeof( TSHFileInfo ), SHGFI_PIDL or 000000040 );
Result := shfi.iIcon;
except
Result := 0;
end;
end;
Leider gibt es da noch einen kleinen Haken: Der Index des Overlayimages befindet sich in den oberen 8 Bits von iIcon. Wie kann ich denn die oberen 8 Bits auswerten und in eine Zahl umwandeln?
Viele Grüße
Gerald