Ressourcen updaten
-
Hi,
ich versuche gerade von meinem Programm aus Ressourcen in ein anderes einzufügen bzw. zu bearbeiten. Folgender Code:
BOOL CALLBACK EnumResNameProc(HMODULE hModule, LPCTSTR lpszType, LPTSTR lpszName, LONG_PTR lParam) { //Wird nicht aufgerufen MessageBox(0, lpszName, lpszType, 0); return TRUE; } BOOL CALLBACK EnumResTypeProc(HMODULE hModule, LPTSTR lpszType, LONG_PTR lParam) { //Funktioniert MessageBox(0, lpszType, 0, 0); EnumResourceNames(hModule, lpszType, EnumResNameProc, 0); return TRUE; } //... //Neue Funktion .. { HMODULE hModule = LoadLibrary(pcExePath); if(!hModule) return FALSE; // ... //Versuch vorhandene Ressourcen zu suchen ... s.o. EnumResourceTypes(hModule, EnumResTypeProc, 0); //Test, ob die Ressource wirklich da ist -> funktioniert HRSRC hResource = FindResource(hModule, MAKEINTRESOURCE(104), "RAW"); if(!hResource) return FALSE; HGLOBAL hGlobal = LoadResource(hModule, hResource); if(!hGlobal) return FALSE; MessageBox(0, (char*)LockResource(hGlobal), 0, 0); //------------------------------------------------------ //Tut nichts HANDLE hResourceUpdate = BeginUpdateResource(pcExePath, FALSE); if(!hResourceUpdate) return FALSE; if(!UpdateResource(hResourceUpdate, "RAW", MAKEINTRESOURCE(104), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), pData, GetFileSize(hOutputFile, NULL))) return FALSE; if(!EndUpdateResource(hResourceUpdate, FALSE)) return FALSE; //----------An den Kommentaren könnt ihr ablesen, was in der betreffenden Abschnitt nicht stimmt.
Es sollten eigentlich:
- alle vorhandenen Ressourcen und Typen aufgezählt werden <- funktioniert nicht
- Inhalt einer Ressource ausgeben <- funktioniert
- den Inhalt der Ressource mit dem Inhalt einer Datei (siehe hOutputFile) 'aufgefüllt' werden und in die .exe schreiben <- funktioniert nichtWas kann ich ändern, damit die "Es sollten eigentlich"-Aufgaben erfüllt werden?
Danke im Voraus
M.T.
-
Was genau heißt "Tut nichts" bei BeginUpdateResource? Ist hResourceUpdate NULL?
Vielleicht helfen die diese Code-Schnippsel etwas

-
flenders schrieb:
Ist hResourceUpdate NULL?
Unwahrscheinlich ... dann würde die Funktion ja FALSE statt TRUE zurückgeben

Der Code-Schnipsel in der MSDN war ursprünglich schon meine Quelle ...
Da muss noch was sein
M.T.