Hallo,
ich kenne zwei Funktionen, mit denen man die Icons auslesen kann.
Die Methode verbraucht viel Arbeitsspeicher. Es ist aber möglich, die Symbole für bestimmte Dateitypen zu ermitteln, z.B. '*.bmp'...
Delphi-Quellcode:
function SHGetIconHandle(szIconFile: String; HUGE, SELECTED: BOOL): HICON;
var
shfi: shFileInfo;
begin
SHGetFileInfo(PChar(szIconFile), 0, shfi, sizeof(shFileInfo),
SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON * Ord(not HUGE) or SHGFI_SELECTED * Ord(SELECTED));
Result := shfi.hIcon;
end;
Mit der nächsten Funktion kann man ein bestimmtes Icon mit Hilfe des Indexes ermitteln.
Delphi-Quellcode:
function ExtractIcon(lpszFile: String; nIconIndex: Integer; HUGE: BOOL): HICON;
var
bIcon, sIcon: HICON;
begin
ExtractIconEx(PChar(lpszFile), nIconIndex, bIcon, sIcon, 1);
if HUGE then
Result := bIcon
else
Result := sIcon;
end;
Gruß