Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Icons von Datei auslesen (https://www.delphipraxis.net/10782-icons-von-datei-auslesen.html)

devnull 25. Okt 2003 10:31


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

Chewie 25. Okt 2003 10:36

Re: Icons von Datei auslesen
 
Das Standardicon kannst du mit SHGetFileInfoSHGetFileInfo ermitteln.
Für mehrere Icons wirst du die Resourcen selbst extrrahieren müssen.

Christian Seehase 25. Okt 2003 10:46

Re: Icons von Datei auslesen
 
Moin Zusammen,

Zitat:

Zitat von Chewie
Für mehrere Icons wirst du die Resourcen selbst extrrahieren müssen.

oder man nimmt ExtractIconEx.
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).

devnull 25. Okt 2003 10:52

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

Matze 25. Okt 2003 10:59

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;

devnull 25. Okt 2003 11:22

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:
  Image1 := TImage.Create(form1);
aber es wird kein icon angezeigt, die datei hat im explorer aber ein icon

devnull

Matze 25. Okt 2003 11:32

Re: Icons von Datei auslesen
 
Kann es sein, dass das Projekt geöffnet oder schreibgeschützt ist?

devnull 25. Okt 2003 11:34

Re: Icons von Datei auslesen
 
@ Matze:
nein, die datei ist weder geöffnet, noch schreibgeschützt

devnull

Matze 25. Okt 2003 11:37

Re: Icons von Datei auslesen
 
Was passiert, wenn du sie per OpenDialog öffnest? Geht das?

devnull 25. Okt 2003 11:39

Re: Icons von Datei auslesen
 
wie öffnen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz