// 释放资源到文件:test.exe
HRSRC res = ::FindResource(NULL, MAKEINTRESOURCE(IDR_FLASH), _T("Flash"));
HGLOBAL gl = ::LoadResource(NULL,res);
LPVOID lp = ::LockResource(gl); // 查找,加载,锁定资源
GetTempPath(MAX_PATH, g_szFlashPlayer);
lstrcat(g_szFlashPlayer, _T("test.exe"));
HANDLE hFile = ::CreateFile (g_szFlashPlayer,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
0,
NULL);
if ( hFile == INVALID_HANDLE_VALUE )
{
return FALSE;
}
DWORD dwWritten;
if (!::WriteFile (hFile, lp, ::SizeofResource(NULL, res), &dwWritten, NULL))
{
return FALSE; //sizeofResource 得到资源文件的大小
}
::CloseHandle (hFile); //关闭句柄
::FreeResource (gl); //释放内存
HRSRC res = ::FindResource(NULL, MAKEINTRESOURCE(IDR_FLASH), _T("Flash"));
HGLOBAL gl = ::LoadResource(NULL,res);
LPVOID lp = ::LockResource(gl); // 查找,加载,锁定资源
GetTempPath(MAX_PATH, g_szFlashPlayer);
lstrcat(g_szFlashPlayer, _T("test.exe"));
HANDLE hFile = ::CreateFile (g_szFlashPlayer,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
0,
NULL);
if ( hFile == INVALID_HANDLE_VALUE )
{
return FALSE;
}
DWORD dwWritten;
if (!::WriteFile (hFile, lp, ::SizeofResource(NULL, res), &dwWritten, NULL))
{
return FALSE; //sizeofResource 得到资源文件的大小
}
::CloseHandle (hFile); //关闭句柄
::FreeResource (gl); //释放内存

本文介绍了一种将程序中的资源释放并保存为独立文件的方法。通过查找、加载和锁定资源,然后利用Windows API函数如CreateFile和WriteFile,将资源内容写入到指定的临时路径下的test.exe文件中。
1万+

被折叠的 条评论
为什么被折叠?



