Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Icon eine *.exe (https://www.delphipraxis.net/62296-icon-eine-%2A-exe.html)

R2D2 2. Feb 2006 16:32


Icon eine *.exe
 
Hallo!
Ich würde gerne aus einer Anwendung (*.exe) das Icon auslesen und in eine TImageList einfügen. Wie mache ich das?
Danke!

turboPASCAL 2. Feb 2006 16:44

Re: Icon eine *.exe
 
Versuche erst einmal Hier im Forum suchenicon exe auslesen und Icons auslesenIcons auslesen dann sehen wir weiter...

R2D2 2. Feb 2006 17:06

Re: Icon eine *.exe
 
Danke für die schnelle Antwort!
Lade mir jetzt das icon mit folgendem code:
Delphi-Quellcode:
ico.Handle := ExtractIcon(Application.Handle, PChar(filename), 0);
Bitmap.Canvas.Draw(0,0,ico);
Images.Add(bitmap, nil);
In der letzten Zeile kommt eine Fehlermeldung "Ungültige Bildgröße".
Warum, und was kann ich dagegen tun?

R2D2 2. Feb 2006 18:43

Re: Icon eine *.exe
 
Mache es jetzt anders:
Delphi-Quellcode:
ico.Handle := ExtractIcon(Application.Handle, PChar(filename), 0);
      ImagesList.Addicon(ico);
So funzt es.

turboPASCAL 2. Feb 2006 19:06

Re: Icon eine *.exe
 
Du hast bei dem vorherigen wohl ein Create vergessen gehabt ?

Ich mache es so:

Delphi-Quellcode:
function GetIconFromFile(Filename: String; aIcon: TIcon;
  IconIndex: Integer): Integer;
var NumberOfIcons: Integer;
begin
  // Anzahl der Icons in einer Datei
  NumberOfIcons := ExtractIcon(hInstance, PChar(Filename), UINT(-1));

  // Ein Icon auslesen angg. im IconIndex
  if (aIcon <> nil) and (NumberOfIcons > -1) then
   aIcon.Handle := ExtractIcon(hInstance, PChar(Filename), IconIndex);

  Result := NumberOfIcons;
end;

// Aufruf zB.:

procedure TForm1.Button1Click(Sender: TObject);
var Ico: TIcon;
begin
  // Nummer der Icons einer Datei
  ShowMessage ( IntToStr( GetIconFromFile(paramstr(0), nil, 0)) );


  // Das erste Icon auslesen
  Ico := TIcon.Create;
  try
    if GetIconFromFile(paramstr(0), Ico, 0) > 0 then
      if Ico <> nil then Image1.Picture.Assign(Ico);
  finally
    Ico.Free;
  end;
end;

R2D2 4. Feb 2006 12:21

Re: Icon eine *.exe
 
Es geht zwar, aber die create-Funktion war nicht schuld. Sonst käme der Fehler doch in einer anderen Zeile, oder?
Und außerdem wollte ich es in eine ImageList einfügen. und das geht ja so auch.

citybreaker 7. Jul 2006 08:19

Re: Icon eine *.exe
 
Mal eine Frage, wo kommt das ExtractIcon her? Mein Delphi kennt die function nicht.

turboPASCAL 7. Jul 2006 08:40

Re: Icon eine *.exe
 
Delphi-Quellcode:
uses ShellAPI;
Ist eine Windowsfunktion.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.

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