![]() |
Anzeige:
|
|
|||||||
| Helfer & Tools Programme für und in XProfan und Fragen dazu. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
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.
Code:
'
' © Frank Abbing für Paules-PC-Forum
' http://www.paules-pc-forum.de/forum/xprofan/
'
Def IsBadStringPtr(2) !"kernel32","IsBadStringPtrA"
Def EnumResourceNames(4) !"kernel32","EnumResourceNamesA"
Def GetSysColor(1) !"user32","GetSysColor"
Def ExtractIconEx(5) !"shell32.dll","ExtractIconExA"
Def LoadLibrary(1) !"kernel32","LoadLibraryA"
Def FreeLibrary(1) !"kernel32","FreeLibrary"
Def GetLastError(0) !"kernel32","GetLastError"
Def EnumResourceTypes(3) !"kernel32","EnumResourceTypesA"
Def EnumResourceLanguages(5) !"kernel32","EnumResourceLanguagesA"
Def GetLocaleInfo(4) !"kernel32","GetLocaleInfoA"
Declare x&, y&, text$, hmod&, type&[32], icon&
Proc EnumResLangProc
Parameters hModule&, lpszType&, lpszName&, wIDLanguage&, lParam&
Declare name$
If wIDLanguage& <> 0
name$ = Space$(256)
GetLocaleInfo(wIDLanguage& ,$4, Addr(name$), 255)
Else
name$="Language Neutral"
EndIf
x&=TreeView("InsertItem", treeview&, lParam&, 2, name$)
TreeView("SetChildren", treeview&, lParam&, 1)
Return 1
EndProc
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)
EnumResourceLanguages(hmod&, lpszType&, lpszName&, ProcAddr("EnumResLangProc", 5), x&)
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
x&=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&)
ExtractIconEx("shell32.dll", 13, 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
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (15.11.2010 um 06:36 Uhr) |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Ich habe den Code nochmal angepasst, weil ich übersehen hatte, dass Resource-Typen auch einen Namen besitzen können, anstelle einer Resourcen-Typ-Nummer. Deswegen funktionierte z.B. das Laden der Shell32.dll nicht. Jetzt geht's.
Würde mich freuen, wenn jemand den Code als Anregung für ein eigenes Tool benutzen würde. Resource-Editoren sind ja immer noch rar gesäht. EDIT: Es werden übrigens auch gepackte Exen/Dlls richtig analysiert. Grad nochmal zwei Abfragen trivialisiert.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (08.11.2010 um 20:53 Uhr) |
|
|
|
|
|
#3 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Nicht interessant genug? Na von mir aus. Hab noch einen länderspezifischen Abzweig eingebaut, sollte ja dabei sein, haben alle, ist wichtig.
EDIT: Die Ländercodes berechnen übrigens die beiden großen Resourcen-Editoren nicht richtig. Z.B. besitzt die Shell32.dll zwei Version-Resourcen (entweder das, oder mein Code spinnt), einmal in deutsch und einmal in englisch. Angezeigt wird aber bei beiden Programmen aber nur die englische! Mein Code zeigt beide an.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (09.11.2010 um 22:29 Uhr) |
|
|
|
|
|
#4 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Es geht eigentlich nicht darum ob das interessant ist, aber wenn ich einen Resourceeditor programmieren würde, müsste er auf jeden Fall sehr viel besser sein als z.B. der Resourcehacker, da der aber eigentlich meine Ansprüche erfüllt, wüsste ich nicht ob ich meinen eigenen Editor überhaupt selbst benutzen würde.
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Es kann ja z.B. schnell passieren, dass ein altes Programm wie der Resourcen-Hacker mit der nächsten Windows-Version nicht mehr richtig funktioniert. Dann würdest du deinen Editor schon benutzen.
Und wie schon gesagt, ich vermute, der RH und der XNRE unterstützen nur Resourcen für eine Sprache. Gibt aber durchaus die Möglichkeit eine Resource in mehreren Sprachen zu benutzen. Sicher z.B. bei Stringresourcen sehr interessant. Ich teste grad ein bischen damit rum und hab den Code einfach mal für alle eingestellt. Vielleicht kann's jemand irgendwann gebrauchen. Und sonst war's für XProfan zumindest ein guter Test, dass auch verschachtelte Callbacks einwandfrei funktionieren.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Erweitert und für alle testbar als ausführbare Datei: http://frabbing.bplaced.net/FResEditor.zip
Einige System-Dll's benutzen tatsächlich Resourcen in mehreren Sprachen, was ja auch Sinn macht. Der Resourcen-Hacker und der XN-Resource-Editor zeigen das nicht an. Mit diesem Minitool lassen sich alle Resourcen in Hexform anzeigen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#7 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#8 (Direktlink) | |
|
Ist öfter hier
![]() Registriert seit: 12.10.2009
Ort: Berlin
Alter: 48
Beiträge: 52
|
Zitat:
es ist eine gute Idee, kann dieses aber leider nicht probieren da dein CODE erst ab XProfan 11.XX läuft. Benutze XPofan 10. Auch dein letzter link meldet mir : ![]() MFG
__________________
Ubuntu 10.04 LTS 64 , Win XP-Prof. SP3 , Win 7 Ultimate 32 ,XProfan 10,XProfan 11Free |
|
|
|
|
|
|
#9 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Ahrg, ist nur (m)eine Testcode-Zeile, damit ich nicht bei jedem Start den Load-Dialog erhalte. Hab das mal aus dem Code rausgenommen.
Anpassung an XProfan 10 sollte auch leicht sein. Einfach die Vars rausnehmen und stattdessen diese Variablen mit Declare zuweisen. Oder waren die Callbacks erst ab XProfan 11? Ne, glaube nicht.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Resourcen: Schickere Icons und Toolbar-Bitmap(s) | Frabbing | Anregungen & Bugreports | 75 | 06.11.2010 19:57 |
| Wenn Hacker Hacker hacken | Info | Sicherheitsmeldungen von heise.de | 0 | 26.07.2010 17:30 |
| Raubt Vista Resourcen für Spiele? | Lässie | Windows Vista | 2 | 18.11.2006 19:29 |
| Vom Notebook aus über Netzwerk die Resourcen des PC´s nutzen | buddha | Netzwerke | 1 | 17.02.2003 09:41 |
| startcenter -> ungenügend resourcen | krapfen_de | Software - Allgemein | 2 | 14.01.2003 13:38 |