释放资源到文件
有时候程序运行时需要调用某些DLL或者其他程序,而为了发布时方便将这些DLL或者EXE添加到了资源中一起编译。运行时再把这些资源释放到文件中即可。那如何释放资源到文件中呢?用下面这个函数:
BOOL CXXXDlg::ReleaseResFile(CString strFileName, UINT 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 );
return true;
}