Basic Univers
Procedure.l GetFileIcon(Filename.s, IconSize.l)
Protected IconID.l, Open.l, KeyID.l, Small.l, Large.l
Protected KeyName.s, Length.l, Count.l, Index.l, Value.s
KeyName = GetExtensionPart("." + Filename)
Filename = #NULL$
If KeyName
KeyName = "." + KeyName
Open = RegOpenKeyEx_(#HKEY_CLASSES_ROOT, KeyName, #Null, #KEY_ALL_ACCESS, @KeyID)
If Open = #ERROR_SUCCESS
KeyName = Space(#MAX_PATH)
Length = #MAX_PATH
RegQueryValueEx_(KeyID, #NULL$, #Null, #Null, @KeyName, @Length)
RegCloseKey_(KeyID)
KeyName + "\DefaultIcon"
Open = RegOpenKeyEx_(#HKEY_CLASSES_ROOT, KeyName, #Null, #KEY_ALL_ACCESS, @KeyID)
EndIf
If Open = #ERROR_SUCCESS
Filename = Space(#MAX_PATH)
Length = #MAX_PATH
RegQueryValueEx_(KeyID, #NULL$, #Null, #Null, @Filename, @Length)
RegCloseKey_(KeyID)
Filename = Trim(Filename)
EndIf
EndIf
If Filename = #NULL$
Filename = "shell32.dll,0"
EndIf
Length = Len(Filename)
Count = CountString(Filename, ",") + 1
Value = StringField(Filename, Count, ",")
Index = Val( Value )
Length -(Len(Value) + 1)
Filename = Left(Filename, Length)
ExtractIconEx_(Filename, Index, @Large, @Small, 1)
If IconSize & #SHGFI_SMALLICON
IconID = Small
Else
IconID = Large
EndIf
ProcedureReturn IconID
EndProcedure
SmallIcon = GetFileIcon("mpeg", #SHGFI_SMALLICON)
LargeIcon = GetFileIcon("reg", #SHGFI_LARGEICON)
If OpenWindow(0, 0, 0, 245, 105, #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered, "Extension Icon")
CreateGadgetList(WindowID(0))
ImageGadget(0, 10, 10, 100, 83, LargeIcon)
ImageGadget(1, 130, 10, 100, 83, SmallIcon)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf