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/)
-   -   ExtractIcon (https://www.delphipraxis.net/168063-extracticon.html)

taaktaak 3. Mai 2012 08:47

ExtractIcon
 
Moin, Moin.
Mit ExtractIcon kann die Anzahl der in einer dll enthaltenen Icons ermittelt werden:

Delphi-Quellcode:
IconCount:=ExtractIcon(Application.Handle,PChar(FName),UInt(-1));
Bei der dll "hpgt3800" wird als Ergebnis der Wert 49087 ermittelt, laden kann man aus dieser dll kein einziges Icon. Mache ich da etwas falsch? Gibt es vielleicht eine Obergrenze, ab der das Ergebnis unberücksichtigt werden kann/muss? Oder muss man damit leben, dass man bei einem Ergebnis ab z.B. 100 prüft, ob ein Icon geladen werden kann...

Zacherl 3. Mai 2012 11:02

AW: ExtractIcon
 
Ist die Dll eventuell gepackt / protected?

taaktaak 3. Mai 2012 12:04

AW: ExtractIcon
 
Tja, einen Schreibschutz hat die dll (von Hewlett-Packard) nicht. Ob diese gepackt ist, entzieht sich meiner Kenntnis. Ich will aus dieser dll auch keine Icons extrahieren. Es geht hier nur ums Prinzip, dass beim Verzeichnis-Scan diese dll laut ExtractIcon() sehr viele Icons enthält, diese aber offenbar gar nicht verfügbar sind.

Zacherl 3. Mai 2012 12:46

AW: ExtractIcon
 
Die API kommt wohl mit der Datei aus irgendeinem Grund nicht zurecht. PE Packer / Protectoren haben manchmal die Angewohnheit, sowas zu verursachen. Könntest du mal mit PEID untersuchen.

Steku 3. Mai 2012 13:12

AW: ExtractIcon
 
hi,

ich würde mal versuchen, ob es die üblichen Verdächtigen bei den
Extract-Tools schaffen, die Icons anzuzeigen, bzw. zu extrahieren.

Evtl. kannst du dir mal den XN Resource Editor von Colin Wilson anschauen.
Wenn der damit klar kommt, kannst du ja mal einen Blick in den Source werfen.

http://www.wilsonc.demon.co.uk/d10resourceeditor.htm

Gruß
Steku

taaktaak 3. Mai 2012 13:28

AW: ExtractIcon
 
Vielen Dank für die Hinweise, werde ich mal in Ruhe überprüfen.

taaktaak 4. Mai 2012 09:12

AW: ExtractIcon
 
Moin, Moin.
So, habe es überprüft: Der XN Resource Editor findet in der benannten "Problem-DLL" keine Icons. Verwende nun folgende Logik: Ermittelt ExtractIcon() eine IconAnzahl>0, wird - sofern die Datei eine DLL ist - versucht das Handle des ersten Icons mit ExtractIcon() zu bestimmen. Konnte das Handle nicht ermittelt werden, wird die DLL nicht in die Ergebnismenge des Scans aufgenommen.
Das erscheint mir eine praktikable Lösung zu sein, die zudem keine messbare zusätzliche Zeit kostet...


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