Re: System Icon extrahieren
Verfasst: 27.09.2012 14:46
Wenn ich ein Icon/Image von einer Dateierweiterung haben möchte, verwende ich diese Prozedur hier:
Die Funktion gibt dabei eine gültige ImageID zurück.
GetExtensionIcon() funktioniert vorallem auch mit ganzen Pfaden, so wird halt bei C:\ das Windows-Partitions-Icon gezeigt, oder bei einer Verknüpfung das dort zugewiesene Icon.
Ansonsten kannst du halt ".exe" und ".dll" für deine Icons verwenden.
EDIT: Nein, alles was du auf einem PC findest, darst du verwenden, ähnlich wie bei Schriftarten, nur darfst du die DLL mit den Icons nicht selber vertreiben.
Code: Alles auswählen
Enumeration
#ExtensionIcon_Small
#ExtensionIcon_Large
EndEnumeration
Procedure.i GetExtensionIcon(FileName.s, Size.i=#ExtensionIcon_Small)
Protected FileInfo.SHFILEINFO, Flags.i = #SHGFI_ICON
Select Size
Case #ExtensionIcon_Small : Flags | #SHGFI_SMALLICON
Case #ExtensionIcon_Large : Flags | #SHGFI_LARGEICON
EndSelect
If GetExtensionPart(FileName)
Flags | #SHGFI_USEFILEATTRIBUTES
EndIf
If SHGetFileInfo_(@FileName, #FILE_ATTRIBUTE_NORMAL, @FileInfo, SizeOf(SHFILEINFO), Flags)
ProcedureReturn FileInfo\hIcon
Else
ProcedureReturn #False
EndIf
EndProcedure
Enumeration
#Window
#StringGadget
#ImageGadget
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
StringGadget(#StringGadget, 10, 10, 200, 20, ".dll")
ImageGadget(#ImageGadget, 10, 40, 32, 32, GetExtensionIcon(".dll", #ExtensionIcon_Large))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #StringGadget
SetGadgetState(#ImageGadget, GetExtensionIcon(GetGadgetText(#StringGadget), #ExtensionIcon_Large))
EndSelect
EndSelect
ForEverGetExtensionIcon() funktioniert vorallem auch mit ganzen Pfaden, so wird halt bei C:\ das Windows-Partitions-Icon gezeigt, oder bei einer Verknüpfung das dort zugewiesene Icon.
Ansonsten kannst du halt ".exe" und ".dll" für deine Icons verwenden.
EDIT: Nein, alles was du auf einem PC findest, darst du verwenden, ähnlich wie bei Schriftarten, nur darfst du die DLL mit den Icons nicht selber vertreiben.