Seite 1 von 1

Verfasst: 14.02.2007 17:21
von Shardik
ts-soft hat geschrieben: PS: ResourceHacker kann ich nur jedem empfehlen, der Resourcen nutzen möchte.
Es geht auch ohne ResourceHacker :wink:

Code: Alles auswählen

#RT_GROUP_ICON = 14
#WindowHeight = 100
#WindowWidth = 180

NewList ResNameList.L()


Procedure.l EnumResNameProc(ResHandle.L, ResType.L, ResName.L, AppParam.L)
  Shared ResNameList.S()

  AddElement(ResNameList())
  ResNameList() = ResName

  ProcedureReturn #True
EndProcedure


Procedure.L EnumResTypeProc(ResHandle.L, ResType.L, AppParam.L)
  If ResType = #RT_GROUP_ICON
    EnumResourceNames_(ResHandle, ResType, @EnumResNameProc(), 0)
  EndIf

  ProcedureReturn #True 
EndProcedure 


LibName.S = "User32.DLL"
LibHandle.L = LoadLibrary_(@LibName)

If LibHandle = 0
  MessageRequester("Fehler", "Die Windows-Bibliothek " + LibName + " konnte nicht geladen werden!", #MB_ICONERROR)
  End
EndIf

EnumResourceTypes_(LibHandle, @EnumResTypeProc(), 0) 

If OpenWindow(1, 0, 0, #WindowWidth, #WindowHeight, LibName, #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  If CreateGadgetList(WindowID(1))
    ListIconGadget(1, 5, 6, #WindowWidth - 12, #WindowHeight - 12, "", 60)
    ChangeListIconGadgetDisplay(1, 0)

    ForEach ResNameList()
      IconHandle = LoadIcon_(LibHandle, ResNameList())

      If IconHandle 
        AddGadgetItem(1, i + 1, "#" + StrU(ResNameList(), #Long), IconHandle)
        i = i + 1
      EndIf
    Next 
  EndIf 
EndIf 

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend 

FreeLibrary_(LibHandle)
Wenn man als LibName z.B. Shell32.DLL einträgt, kann man noch viel mehr Icons bewundern...

Im englischen Forum habe ich übrigens auch schon einmal ein Beispiel gezeigt, mit dem man alle in einer Datei (z.B. Exe, DLL) als Resource gespeicherten Cursor anschauen kann:
http://www.purebasic.fr/english/viewtop ... 3&start=35

Verfasst: 14.02.2007 20:04
von ts-soft
@Shardik
Schönes Beispiel :allright:
Vielleicht könntest Du sowas wie einen ResourceViewer für die PB-IDE oder
jaPBe schreiben?