Ich benutze folgende Funktion um an den ShellIconindex zu kommen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function TServer.GetShellIcon(FileName: string): integer; var SHFileInfo: TSHFileInfo; begin Result := 0; if Length(FileName) = 1 then FileName := FileName + ':'; if (Length(FileName) = 2) and (copy(FileName, length(FileName), 1) = ':') and (copy(FileName, length(FileName), 1) <> '\') then FileName := FileName + '\'; ShGetFileInfo(PChar(FileName), 1, SHFileInfo, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ICON); Result := SHFileInfo.iIcon end; |
Das funktioniert bei 99,9% aller Dateien wunderbar, nur z.B. bei *.htm Dateien wird das Defaulticon (unbekannte Datei) anstelle des korrekten Icons (wie im Explorer dargestellt) zurückgeliefert...