Entwickler-Ecke

Windows API - Problem mit Shellicons...


FriFra - Mi 18.06.03 23:57
Titel: Problem mit Shellicons...
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;
  //Falls ein Laufwerksbuchstabe übergeben wurde...
  if Length(FileName) = 1 then
    FileName := FileName + ':';
  //Laufwerke sollten mit \ enden...
  if (Length(FileName) = 2and (copy(FileName, length(FileName), 1) = ':'and
    (copy(FileName, length(FileName), 1) <> '\'then
    FileName := FileName + '\';
  //Dateiino lesen...
  ShGetFileInfo(PChar(FileName), 1, SHFileInfo, SizeOf(TSHFileInfo),
    SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ICON);
  //IconIndex liefern...
  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...