天天看點

MFC将任意檔案放入資源中調用

将一個版本的程式包含到另一個版本(母體)裡面,母體在運作的時候,判斷是不是自己需要的版本,如果是,那麼就運作,如果不是,那麼釋放出包含的那個版本的程式,然後運作釋放出來的程式。

這樣就沒有必要将兩個程式捆綁到一起,隻是把一個程式當作那個母體程式的資源包含到母體程式裡面

建立了一個mfc工程,然後在檢視資源的地方,選擇添加資源,會出現一個對話框,一

個打開檔案對話框,這裡選擇打開一個exe檔案,然後又會出現一個對話框,讓輸入資源的

類型,這裡輸入exe,因為添加的檔案是exe檔案,當然添加的是什麼檔案就要輸入相應的類

型(擴充名),然後資源就會被添加進去,并且vc會自動在左邊打開(二進制的),左邊的

資源預設為IDR_EXE1,然後編寫代碼

HRSRC       hrFile       =       FindResource(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_EXE1), "EXE ");     //後面這連個參數很重要  

if(hrFile==NULL)

{

  AfxMessageBox( "沒有找到資源 ");

}

HGLOBAL       hgFile       =       LoadResource(AfxGetInstanceHandle(),hrFile);      

if(hgFile==NULL)

{

  AfxMessageBox( "加載資源失敗 ");

}

LPVOID       pvFile       =       LockResource(hgFile);      

if(pvFile==NULL)

{

  AfxMessageox( "不能加載記憶體 ");

}

HANDLE       hfFile       =       CreateFile( "C://amn.exe ",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);      

DWORD       nFileLength       =       SizeofResource(AfxGetInstanceHandle(),hrFile);      

DWORD       nWriteLength;      

WriteFile(hfFile,pvFile,nFileLength,&nWriteLength,NULL);      

CloseHandle(hfFile);      

FreeResource(hrFile);  

這樣就會在c:/下面生成一個amn.exe,這個就是當時包含進去的那個exe檔案