Extract Icon-Resource aus EXE oder DLL



  • wie kann ich eine beliebige Icon Resource aus einer DLL oder Exe extrahieren und als Icon Datei speichern



  • ExtractIcon (sowie ExtractIconEx).



  • Mit den von dir genannten Funktionen bekomme ich zwar schön die Anzahl der Icon Resourcen in einer DLL oder EXE. Auch kann ich mir damit die 16x16 und die 32x32 Icons extrahieren. Aber das funktioniert nicht so wie erhofft, da eben nur für die 16er und 32er Icons.

    Z.B. wennn ich ExtractIconEx(filename, 2, NULL, hIcon, 32); aufrufe und hIcon ist ein Array von 32, dann sind die Icon Resourcen 2, 3, 4, .. 33 und davon jeweils nur das 16x16er Icon im hIcon Array, obwohl die Icon Resource 2 ja schon alleine über 10 verschiedenen Icons enthält.

    Was ich aber suche ist eine Funktion die mir für die Icon Resource 2 alle hinterlegten Icons liefert, die Resource 2 kann dann z.B. diverse Grössen mit diversen Farbtiefen 32Bit, 8 Bit und 4Bit enthalten.

    Z.B. lieftert das Freeware Icontools "IcoFX" solch ein Ergebniss, wenn man damit eine DLL öffnet. Zuerst erhält man eine Übersicht über alle in der Datei enthaltenen Resourcen. Öffnet man dann eine bestimmte Icon Resource, sieht man alle darin enthaltenen Icon Grössen und Farbtiefen.



  • Evtl. dann PrivateExtractIcons?
    Ansonsten mal unter Icons (Icon Functions) nachschauen.



  • Danke erstmal für die Mühe, aber ich denke das ist auch nicht das was ich benötige. An zwei Stellen bin ich fündig geworden:

    https://msdn.microsoft.com/en-us/library/ms997538.aspx

    http://blogs.msdn.com/b/oldnewthing/archive/2012/07/20/10331787.aspx

    Wenn ich das dort richtig verstanden habe muss ich so vorgehen:

    1. mit LoadLibraryEx die EXE/DLL die die Resource enthält laden
    2. Icon Groupinformationen mit RT_GROUP_ICON, FindResource und LoadResource holen. In der Struktur GRPICONDIR ist nun hinterlegt welche Icons zu der Gruppe gehören
    3. anhand der hinterlegten IDs kann ich nun mit RT_ICON, FindResource und LoadResource alle zu einer Gruppe gehörendne IDs laden.
    4. die Handels zu den Icon müssen dann in eine *.ico File geschrieben werden

    soweit so gut, die Funktionen für 4. hatte ich mir schon vor einiger Zeit geschrieben. 1. und 3. stellen auch kein Problem dar. Nur bei 2. weiss ich nicht was ich als 2ten Parameter von FindResource einsetzen soll. Ich geh mal davon aus dass die Resource mit irgendeiner Nummer hinterlegt ist und dann sowas eingesetzt werden muss : MAKEINTRESOURCE(Nummer), wo bekomme ich die Nummer für die Resource her?



  • Wenn du die Quellen hast: in der resource.h, ansonsten mit dem kleinen Tool Resource Hacker


  • Mod

    Ein entsprechendes Tool gibt es schon fertig:
    http://www.nirsoft.net/utils/iconsext.html



  • Ich möchte die Problematik prorgammierteschnisch lösen und keine externen Tools oder andere Programme benutzen.

    Bin schon ein ganzes Stück weiter gekommen. Die nächsdte Hürde ist, dass das Iconformat für 256x256 Icons nicht dem von kleineren Icons entspricht. Hier wird irgendwie mit PNG-Dateien gearbeitet. Weiss auch noch nicht wie ich jetzt damit umzugehen hane.

    Für kleinere Icons funktioniert mein Code mit Auslesen und wieder Speicher von und zu zu Dateien.


Log in to reply