Hallo,
Ich habe versucht mir ein Hilfsprogramm zu machen, um Icons aus Dateien automatisiert zu extrahieren. Ziel wäre es, ein kleines und ein Grosses (sofern vorhanden) zu holen. Im Prinzip funktioniert das auch, indem ich die API-Funktion ExtractIconEx verwende. Leider jedoch und das kann ich mir nicht erklären, sehen meine ICOs nachher ziemlich hm…beschissen oder „billig“ aus. Ich hab den Eindruck, dass das mit den 256-Farben irgendwie nicht haut. Da ich Win2000 habe und eine Win32-API-Methode benutze wird’s wohl irgendwie an TICon’s SaveToFile liegen.
Kann das sein ?
Hier der Code
procedure TForm1.Button2Click(Sender: TObject);
var
str,
FileName: string;
i,
Icons: Integer;
Icon: TIcon;
hLarge,
hSmall: hIcon;
begin
FileName := ‚C:\WinNT\Explorer.exe‘;
Icons := ExtractIconEx(pChar(FileName), -1, hLarge, hSmall, 1);
if Icons > 0 then
begin
Icon := TIcon.Create;
try
for i := 0 to (Icons - 1) do
begin
Icon.ReleaseHandle;
if ExtractIconEx(pChar(FileName), i, hLarge, hSmall, 1) > 0 then
begin
Icon.Handle := hSmall;
str := ICONFILES + IntToStr(i + 1) + ‚S‘ + ICO;
Icon.SaveToFile(str);
Icon.ReleaseHandle;
Icon.Handle := hLarge;
str := ICONFILES + IntToStr(i + 1) + ‚H‘ + ICO;
Icon.SaveToFile(str);
end;
end;
finally
Icon.Free;
end;
end;