Binary-Resource (z.B. Exe) laden und speichern



  • Hallo zusammen,

    wollt ma fragen wie ich ne Resource laden und auf der Festplatte abspeichern kann. Also wenn ich in meiner Exe-Datei zum Beispiel eine weitere Exe als Resource eingebunden habe oder z.B. ein *.wav -File. Jo hab schon gesehen da gibts die Funktionen LoadResource und FindResource nur wie bekomme ich einen Pointer auf den Speicherbereich?? Also damit ich die Resource dann als Datei auf die Festplatte schreiben kann.

    Wäre echt goil wenn ihr mir da nen Anhaltspunkt geben könntet.

    Schönen Gruß
    Greetz
    Xzibit



  • Hier ist eine Funktion, die das erledigt:

    int DumpResource(LPCTSTR lpModuleName,
    				 LPCTSTR lpFileName,
    				 const int iResourceID,
    				 LPCTSTR lpResName)
    {
    	HINSTANCE hInst = GetModuleHandle(lpModuleName);
    	if(!hInst)
    		return 0;
    
    	HRSRC hResource = FindResource(hInst, MAKEINTRESOURCE(iResourceID), lpResName);
    	if(!hResource)
    		return 0;
    
    	HGLOBAL hGlobal = LoadResource(hInst, hResource);
    	if(!hGlobal)
    		return 0;
    
    	void* pData = LockResource(hGlobal);
    	if(!pData)
    	{
    		FreeResource(hGlobal);
    		return 0;
    	}
    
    	FILE* file = _tfopen(lpFileName, _T("wb"));
    	fwrite(pData, SizeofResource(hInst, hResource), 1, file);
    	fclose(file);
    
    	FreeResource(hGlobal);
    
    	return 1;
    }
    

    sorry für die alten C-Dateifunktionen :p



  • Yeah goil vielen Dank!
    Genau das wonach ich gesucht hab. DANKE

    Grüße
    Xzibit



  • Wie kann ich diese Funktion unter VC++.Net verwenden. Ich habe das mal eingebunden, weiß aber nicht was die einzelnen Parameter
    (LPCTSTR lpModuleName, LPCTSTR lpFileName, const int iResourceID, LPCTSTR lpResName) bedeuten.

    Danke für die Hilfe

    EDIT:
    Hat sich erledigt -> habs doch gerade hinbekommen!!!


Anmelden zum Antworten