Seite 1 von 1
Icon aus EXE
Verfasst: 18.03.2011 17:42
von purebas
Wie kann ich ein Icon aus eine EXE extrahieren und in eine Liste einfügen?
Und wie funktioniert dass mit Dateien, wo die Symbole ja nur indirekt über
die verknüpfte Anwendung zugewiesen werden?
Re: Icon aus EXE
Verfasst: 18.03.2011 17:45
von RSBasic
Mit dem WinAPI-Befehl ExtractIcon(Ex) kannst du das Icon aus einer Executable-Datei oder DLL-Datei extrahieren:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Beispielcode aus der WinAPI Library:
Code: Alles auswählen
EnableExplicit
Define FolderIcon
Define Draw
ExtractIconEx_("shell32.dll",3,0,@FolderIcon, 1)
CreateImage(1,32,32)
Draw = StartDrawing(ImageOutput(1))
Box(0,0,32,32,RGB(255,255,255))
DrawIcon_(Draw,0,0,FolderIcon)
StopDrawing()
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ImageGadget(1,10,10,0,0,ImageID(1),0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: Icon aus EXE
Verfasst: 18.03.2011 17:58
von ts-soft
Farbe wäre: Box(0,0,32,32,GetSysColor_(#COLOR_BTNFACE)) die bessere Wahl.
Re: Icon aus EXE
Verfasst: 18.03.2011 19:35
von Rudi
Zum zweiten Teil der Frage:
Code: Alles auswählen
EnableExplicit
Procedure.l CatchExeIcon(Pfad.s)
Protected Icon.SHFILEINFO
SHGetFileInfo_(Pfad, #Null, @Icon, SizeOf(SHFILEINFO), #SHGFI_ICON|#SHGFI_SMALLICON|#SHGFI_USEFILEATTRIBUTES)
ProcedureReturn Icon\hIcon
EndProcedure
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ImageGadget(1,10,10,0,0,CatchExeIcon("C:\Autoexec.bat"),0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: Icon aus EXE
Verfasst: 21.03.2011 14:48
von purebas
Vielen Dank für die Beispiele.
Unter Win7 wirkt das Icon aus shell32.dll abgeschnitten (siehe Antwort zu 1.Frage).
Sind die Symbole unter Win7 etwas größer als 32 Pixel?
Kann oder sollte man die Größe vom Symbol ermitteln, bevor es extrahiert wird?
Wenn ja, wie macht man das?
Re: Icon aus EXE
Verfasst: 21.03.2011 15:08
von ts-soft
Nein, aber der Rand vom Style klaut Dir ca. 4 pixel. Die solltest Du mit ranbasteln.
Re: Icon aus EXE
Verfasst: 29.04.2011 14:38
von Bisonte
Da ich mich auch grad damit beschäftigen muss

....
purebas hat geschrieben:Kann oder sollte man die Größe vom Symbol ermitteln, bevor es extrahiert wird?
Wenn ja, wie macht man das?
Also vor dem extrahieren geht es nicht...
Allerdings ist in der
Prozedur von sibru alles drin um die Abmessungen zu ermitteln, sobald man das Iconhandle hat.
Aber du kannst das
#SHGFI_SMALLICON in ein
#SHGFI_LARGEICON ändern, aber ob sich an den Maßen irgendetwas tut,
kann ich so nicht sagen. (nachzulesen unter
MSDN)