![]() |
Icons von Datei auslesen
Hi,
wie kann ich ein ProgrammIcon aus einer Exe-Datei auslesen, und dieses anschließend in meinem Programm anzeigen lassen ? Wenn ein Programm mehrere Icons hat, möchte ich für jedes Icon ein neues Image-Objekt in meinem Fenster erstellen. Geht das überhaupt und wie kann ich das machen ? devnull |
Re: Icons von Datei auslesen
Das Standardicon kannst du mit
![]() Für mehrere Icons wirst du die Resourcen selbst extrrahieren müssen. |
Re: Icons von Datei auslesen
Moin Zusammen,
Zitat:
Wichtig: Hierzu muss man sich die Funktion selber importieren, da die von Borland bereitgestellte Importvariante, nicht den vollen Funktionsumfang ermöglicht. Dazu gibt es sogar bei Borland einen Artikel. (#16778 in den Delphi-FAQ). |
Re: Icons von Datei auslesen
Hi,
das is wohl das was ich gesucht hab. Leider versteh ich nich, wie ich mir jetzt das Icon rausholen kann. Hab diese Mega-Beschreibung angeguckt klappt aber net. devnull |
Re: Icons von Datei auslesen
Hi!
Nimm einfach anstatt der paintBox ein Image und gib noch die SaveDialog-Komponente aufs Formular:
Delphi-Quellcode:
//exe auswählen
procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then DrawFile(OpenDialog1.FileName); end; //Icon auslesen: procedure TForm1.DrawFile(Name: String); var FileInfo: TSHFileInfo; ImageListHandle: THandle; aIcon: TIcon; begin // Speicher löschen FillChar(FileInfo, SizeOf(FileInfo), #0); // Handle der Image Liste der ausgewählten Datei ermitteln ImageListHandle := SHGetFileInfo( PChar(Name), 0, FileInfo, SizeOf(FileInfo), // großes Icon verlangen SHGFI_ICON or SHGFI_LARGEICON ); try // TIcon Objekt erstellen aIcon := TIcon.Create; try // Icon Handle zuweisen aIcon.Handle := FileInfo.hIcon; // Transparent darstellen aIcon.Transparent := True; with Image1 do begin // Paintbox auf die entsprechende Größe bringen Width := aIcon.Width; Height := aIcon.Height; Application.ProcessMessages; // Paintbox löschen Canvas.Rectangle(-1, -1, Succ(Width), Succ(Height)); // Icon darstellen Canvas.Draw(0, 0, aIcon); end; finally // TIcon Objekt freigeben FreeAndNil(aIcon); end; finally // Icon der Shell wieder freigeben DestroyIcon(FileInfo.hIcon); // Icon Liste der Shell wieder freigeben {ImageList_Destroy(ImageListHandle);} end; end; //Speicher freigeben, da //ImageList_Destroy(ImageListHandle); nicht funktioniert hatte :) procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Free; end; //Icon speichern procedure TForm1.Button2Click(Sender: TObject); begin SaveDialog1.Execute; if pos('.bmp', SaveDialog1.filename) = 0 then SaveDialog1.fileName := SaveDialog1.FileName + '.bmp'; Image1.Picture.SaveToFile(SaveDialog1.FileName); end; |
Re: Icons von Datei auslesen
Hi,
ich hab mal die DrawFile ('C:\PROJEKT.EXE'); so in mein Programm eingebunden. in DrawFile hab ich noch hinzugefügt:
Delphi-Quellcode:
aber es wird kein icon angezeigt, die datei hat im explorer aber ein icon
Image1 := TImage.Create(form1);
devnull |
Re: Icons von Datei auslesen
Kann es sein, dass das Projekt geöffnet oder schreibgeschützt ist?
|
Re: Icons von Datei auslesen
@ Matze:
nein, die datei ist weder geöffnet, noch schreibgeschützt devnull |
Re: Icons von Datei auslesen
Was passiert, wenn du sie per OpenDialog öffnest? Geht das?
|
Re: Icons von Datei auslesen
wie öffnen ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz