Home » Tipps & Tricks » Dateien/Verzeichnisse » Dateieigenschaften » Icons aus einer Datei lesen
Icons aus einer Datei lesen
Mit folgender Funktion ist es möglich, Icons aus den Ressourcen einer Datei zu extrahieren. Als ersten Parameter muss der komplette Pfad+Dateiname angegeben werden. Über den Parameter IconNr, können auch weitere Icons innerhalb der ausgewählten Datei ausgelesen werden. Der Index der Icons beginnt bei 0.
uses ShellApi; function IconFromFile(const Filename: string; IconNr: Word): HICON; var buffer: array[0..2*MAX_PATH]of Char; begin StrPCopy(buffer, Filename); Result := ExtractAssociatedIcon(HInstance, buffer, IconNr); end;
Dieses Beispiel holt sich das Icon eines beliebigen Programmes und speichert es in einer Datei.
procedure TForm1.Button1Click(Sender: TObject); var TempIcon: HICON; Icon:TIcon; begin if OpenDialog1.Execute then begin //Icon holen TempIcon := IconFromFile(OpenDialog1.FileName,0); //Prüfen ob gefunden if (TempIcon 0) then begin //In Datei speichern Icon:=TIcon.Create; try Icon.Handle := TempIcon; Icon.SaveToFile('c:Merke.ico'); finally Icon.Free; end; end; end; end;
Mit
Application.Icon.Handle:=TempIcon;
kann das Icon zur Laufzeit auch dem eigenen Programm zugewiesen werden.
Und mit
Paintbox1.Canvas.DrawIconEx(Handle, 0, 0,TempIcon, 16, 16, 0, Brush.Handle, di_Normal);
in eine Paintbox gezeichnet werden.