.exe als Resource
-
Ich möchte eine .exe-Datei in die Resourcen importieren, das geht auch!
Kann mir jemand sagen, wie ich die Datei jetzt irgendwohin "entpacken" kann?
(Sozusagen ein selbergemachtes Setup-Programm)MfG,
D.Derigs
-
einfach wieder auf die platte schreiben und .exe nennen
guckst du: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/loadresource.asp
und: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/findresource.asp
-
1. LoadResource
2. SizeofResource
3. LockResource4. siehe Vorposter
-
Wie auf Platte schreiben? (CFile, fstream, fopen..., oder gibts da ne eigene Funktion?)
-
WriteFile
-
Ich hab jetzt das geschrieben:
HRSRC xx=FindResource(0,MAKEINTRESOURCE(IDR_EXE1),0); DWORD x2=SizeofResource(0,xx); HGLOBAL x4=LoadResource(0,xx); LPVOID x3=LockResource(x4); BOOL cc=WriteFile("test.exe",x3,x2,0,0);
Er erstellt aber keine Datei, schon FindResource() scheint nicht zu funktionieren!
Wo ist mein Fehler?MfG,
D.Derigs
-
Ich habe mal die Werte ermittelt, die die Variablen enthalten...
HRSRC xx=FindResource(0,MAKEINTRESOURCE(IDR_EXE1),0); //xx=0x00000000 { unused=???... } DWORD x2=SizeofResource(0,xx); //x2=0 HGLOBAL x4=LoadResource(0,xx); //x4=0x00000000 LPVOID x3=LockResource(x4); //x3=0x00000000 BOOL cc=WriteFile("test.exe",x3,x2,0,0); //cc=0
-
-
@EarlyBird
Hat nichts gebracht!HRSRC xx= ::FindResource(AfxGetInstanceHandle(),"#129","APP"); //IDR_EXE1 ist 129 DWORD id=GetLastError(); //id=1813 (ERROR_RESOURCE_TYPE_NOT_FOUND)
-
-
Es geht immer noch nicht!!!
Hier der Code:BOOL ExtractFileFromResource(int iResourceId, LPCTSTR szResourceType, char* szDateiName) { HRSRC hResource; hResource = FindResource(NULL, MAKEINTRESOURCE(iResourceId), szResourceType); //hResource -> 0 int xxxxx=GetLastError(); //GetLastError() -> 1813 (ERROR_RESOURCE_TYPE_NOT_FOUND) if (hResource == NULL) { return FALSE; // <- Hier beendet sich die Funktion wieder........ } HGLOBAL hDateiInhalt; hDateiInhalt = LoadResource(NULL, hResource); if (hDateiInhalt == NULL) { return FALSE; } DWORD dwFileSize; dwFileSize = SizeofResource(NULL, hResource); if (dwFileSize < 0) { return FALSE; } FILE* hFile; hFile = fopen(szDateiName, "wb"); if (hFile == NULL) { return FALSE; } fwrite(hDateiInhalt, dwFileSize, 1, hFile); fclose(hFile); return TRUE; } void CMediaDlg::OnBnClickedButton1() { ExtractFileFromResource(IDR_EXE1,RT_RCDATA,"C:\\test.exe"); }
Ich bin völlig ratlos (
), da ja anscheinend nichts geht
-
vielleicht hast du die resource falsch eingebunden??
-
Hier gab's das gleiche Problem schonmal, vielleicht klappts ja diesmal...
http://www.c-plusplus.net/forum/viewtopic.php?t=70297&highlight=findresource
Gruß
:: NoName ::
-
Tada, man gebe bei szResourceType "exe" an, dann geht es!
Danke an alle und jeden !!!MfG,
D.Derigs