Hi Liebe Autoit Gemeinde,
ich will mich kurz halten & gleich zum Punkt kommen. Ich versuche eine Möglichkeit zu finden um .exen die icons zu stiebitzen. Dabei viel mir auf das 'ExtractAssociatedIcon' von der 'shell32' sich den ersten gefundenen .ico schnappt. welcher bei Autoit exen eine schlechte qualität hat. Deshalb erhöhte ich die Zahl & bekam das icon das ich wollte. Jedoch sind die Icons bei fast jeder exe anders angelegt. Manche besitzen nur 'einen'.
So kam ich auf die idee gleich eine Ganze icon gruppe herauszuladen damit ich dem Problem direkt entgehen kann schlecht qualitative Icons zu bekommen. Das ist allerdings etwas das ich nicht weiß umzusetzen. Da ich im Umgang mit DLL's ziehmlich unerfahren bin.
ich glaube das die Funktion 'ExtractIconExW' wie für mich gemacht ist.
Keine ahnung wie ich die Zeile zu füllen habe :<
Local $Ret = DllCall('shell32', 'long', ''ExtractIconExW', 'int', 0, 'str', $Path, 'int*', 1)
hier ein Beispiel script:
;#include <MsgBoxConstants.au3>
;#include <array.au3>
#include <GDIPlus.au3>
Local $Path = @ScriptDir & "\1.exe"
Local $SavePath = @ScriptDir & "\1.ico"
Local $Ret = DllCall('shell32', 'long', 'ExtractAssociatedIcon', 'int', 0, 'str', $Path, 'int*', 99)
;~ Local $Ret = DllCall('shell32', 'long', 'ExtractIcon', 'int', 0, 'str', $Path, 'int*', 1)
Local $hIcon = $Ret[0]
_GDIPlus_Startup()
Local $pBitmapdll = DllCall('Gdiplus.dll', 'int', 'GdipCreateBitmapFromHICON', 'ptr', $hIcon, 'int*', 0)
Local $pBitmap = $pBitmapdll[2]
_WinAPI_DestroyIcon($Ret[0])
_GDIPlus_ImageSaveToFileEx($pBitmap, $SavePath, '{557CF400-1A04-11D3-9A73-0000F81EF32E}')
_GDIPlus_ImageDispose($pBitmap)
_GDIPlus_Shutdown()
Alles anzeigen