| Frank hat ein Anwendungstemplate für einen ResHacker bereitgestellt:
Frank Abbing (07.11.2010)
Ich habe meinen Code etwas erweitert, mit dem die Iconnamen eines XProfan-Programms gelistet werden konnten. Er könnte jetzt als Basis dienen, um einen eigenen Resourcen-Editor zu schreiben, für alle Dateien, die Resourcen enthalten. Vielleicht hat ja jemand Lust, weiter zu entwickeln. '
' © Frank Abbing für Paules-PC-Forum
' ./../../sys/?nohdr=1&u=www.paules-pc-forum.de/forum/xprofan/
'
Def EnumResourceNames(4) !"kernel32","EnumResourceNamesA"
Def GetSysColor(1) !"user32","GetSysColor"
Def ExtractIconEx(5) !"shell32.dll","ExtractIconExA"
Def EnumResourceTypes(3) !"kernel32","EnumResourceTypesA"
Declare x&, y&, text$, hmod&, type&[32], icon&
Proc EnumResNameProc
Parameters hModule&, lpszType&, lpszName&, lParam&
Declare name$
y& = lpszName& >> $10
IfNot y&
name$ = "ID " + Str$(lpszName&)
Else
name$ = String$(lpszName&,0)
Endif
If name$ <> ""
x&=TreeView("InsertItem", treeview&, lParam&, 1, name$)
TreeView("SetChildren", treeview&, lParam&, 1)
TreeView("Expand", treeview&, lParam&, 2)
Return 1
Else
Return 0
EndIf
EndProc
Proc EnumResTypeProc
Parameters hModule&, lpszType&, lParam&
Declare name$
y& = lpszType& >> $10
IfNot y&
name$ = GetString$(resnames&, lpszType&-1)
Else
name$ = String$(lpszType&,0)
Endif
If name$ <> ""
x&=TreeView("InsertItem", treeview&, 0, 0, name$)
EnumResourceNames(hmod&, lpszType&, ProcAddr("EnumResNameProc", 4), x&)
Return 1
Else
Return 0
EndIf
EndProc
Proc LoadNewFile
WindowTitle "Alle Resourcen auflisten."
TreeView("DeleteItem", treeview&, 0)
text$ = LoadFile$("Datei öffnen:","Ausführbare Dateien|*.EXE;*.DLL;*.CPL;*.SYS;*.SCR;*.OCX;*.AMC")
If text$<>""
Case hmod&: FreeDll hmod&
hmod& = UseDll(text$)
If hmod&
WindowTitle "Alle Resourcen auflisten: "+text$
SendMessage(treeview&,11,0,0)
UseCursor 2
EnumResourceTypes(hmod&, ProcAddr("EnumResTypeProc", 3), 0)
SendMessage(treeview&,11,1,0)
UseCursor 0
Endif
EndIf
EndProc
WindowStyle 31 + 512
Cls GetSysColor(15)
Var resnames& = Create("List", 0)
AddString(resnames&, "Cursor")
AddString(resnames&, "Bitmap")
AddString(resnames&, "Icon")
AddString(resnames&, "Menu")
AddString(resnames&, "Dialog")
AddString(resnames&, "String")
AddString(resnames&, "FontDir")
AddString(resnames&, "Font")
AddString(resnames&, "Accelerator")
AddString(resnames&, "RCData")
AddString(resnames&, "MessageTable")
AddString(resnames&, "Group_Cursor")
AddString(resnames&, "13")
AddString(resnames&, "Group_Icon")
AddString(resnames&, "15")
AddString(resnames&, "Version")
AddString(resnames&, "DlgInclude")
AddString(resnames&, "18")
AddString(resnames&, "PlugPlay")
AddString(resnames&, "Vxd")
AddString(resnames&, "AniCursor")
AddString(resnames&, "AniIcon")
AddString(resnames&, "Html")
AddString(resnames&, "Manifest")
PopUp "&Datei"
AppendMenu 100,"Laden"
AppendMenu 200,"Beenden"
Var il& = Create("ImageList", 16, 16)
ExtractIconEx("shell32.dll", 4, 0, Addr(icon&),1)
ImageList("AddIcon", il&, icon&)
ExtractIconEx("shell32.dll", 2, 0, Addr(icon&),1)
ImageList("AddIcon", il&, icon&)
Var treeview& = Create("TreeView", %hwnd, il&, 16, 16, 240, 392)
LoadNewFile
While 1
WaitInput
Case %key=2: BREAK
If MenuItem(100)
LoadNewFile
ElseIf MenuItem(200)
BREAK
Endif
EndWhile
End
Mal bei Gelegenheit schauen, ob man daraus nicht ein lecker Programm machen kann. *duck* |
|