[VC++]成功實現資源釋放(原創+轉載)
/************************************************************************/
/* 函式說明:釋放資源中某型別的檔案
/* 參 數:新檔名、資源ID、資源型別
/* 返 回 值:成功返回TRUE,否則返回FALSE
/* By:Koma 2009.07.24 23:30
/************************************************************************/
BOOL ReleaseRes(CString strFileName,WORD wResID,CString strFileType)
{
// 資源大小
DWORD dwWrite=0;
// 建立檔案
HANDLE hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if ( hFile == INVALID_HANDLE_VALUE )
{
return FALSE;
}
// 查詢資原始檔中、載入資源到記憶體、得到資源大小
HRSRC hrsc = FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);
HGLOBAL hG = LoadResource(NULL, hrsc);
DWORD dwSize = SizeofResource( NULL, hrsc);
// 寫入檔案
WriteFile(hFile,hG,dwSize,&dwWrite,NULL);
CloseHandle( hFile );
// 啟動EXE或COPY等後續操作省略
// ......
return TRUE;
}
#include "include.h"
int main()
{
if(ReleaseRes("ABC.exe",(WORD)IDR_EXE1,"EXE"))
{
printf("釋放檔案成功!\n");
}
else
{
printf("釋放檔案失敗!\n");
}
return 0;
}