Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi 24x24 Icon extrahieren ? (https://www.delphipraxis.net/47816-24x24-icon-extrahieren.html)

jfheins 16. Jun 2005 17:10


24x24 Icon extrahieren ?
 
Ich möchte gerne ein 24x24 Icon aus der Shell32.dll extrahiern, doch irgendwie bekomme ich das nicht hin ...

Meine bisherigen Versuche laufen darauf hinas, dass ich das 16x16 Icon kriege, und das 32x32, aber n9icht das 24x24, welches ich brauche und weilches auch existiert ...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Icon1, Icon2: TIcon;
  klein, gross: HIcon;
begin
  try

  Icon1 := TIcon.Create;
  Icon2 := TIcon.Create;

  klein := 0;
  gross := 0;

  Label1.Caption := inttostr (ExtractIconEx (PChar('C:\WINDOWS\system32\shell32.dll'), 23, klein, gross, 1));

  Icon1.Handle := klein;
  Icon2.Handle := gross;

  PaintBox321.Canvas.Rectangle(-1, -1, Succ(PaintBox321.Width), Succ(PaintBox321.Height));

  PaintBox321.Canvas.Draw (0, 0, Icon1);
  PaintBox321.Canvas.Draw (40, 0, Icon2);


  Icon1.Free;
  Icon2.Free;

  except
   ShowMessage(SysErrorMessage(GetLastError));
  end;
end;
Dann sind in der Paintbox halt das 16x16 rechts und das 32x32 links, aber 24x24 :?

Kennt sich damit wer aus ?

toms 18. Jun 2005 08:41

Re: 24x24 Icon extrahieren ?
 
Hallo,

Kenne mich nicht gut damit aus aber ich denke du kannst an das Icon
per LoadLibrary(), FindResource(),... herankommen und extrahieren.

Christian Seehase 18. Jun 2005 13:58

Re: 24x24 Icon extrahieren ?
 
Moin Julius,

ich vermute mal, dass Du Dir ExtractIconEx selber importieren musst, um alle Icons mit dem genannten Index zu erhalten.
Die Art und Weise, wie Borland die Funktion importiert hat gibt Dir jeweils nur nur ein Small- und ein Largeicon zurück (beide Parameter sind ja als Var deklariert.).
Deklariere die bei Deinem Import mal als const.
Dann musst Du auch noch daran denken, dass Du nicht mehr einfach eine Variable übergeben kannst, sondern auch noch den Speicher reservieren musst.
Der Rückgabewert von ExtractIconEx gibt Dir an wieviele Icons extrahiert wurden (sollte bei Deinem bisherigen Aufruf dann ja immer 1 sein)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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