★★★VS2005下,关于自定义资源文件的读取保存程序?解决后100分相送

QQ150900 2007-01-27 12:29:07
我用的是VS2005 自定义了一个“EXE”资源类型,并在这个类型下面添加了一个exe文件,VS自动生成了一个ID为IDR_EXE1的资源文件。

问题是:我想将这个IDR_EXE1资源文件读出来,并把它保存在C盘下面,请问怎么用程序实现这个功能。100分相送。
...全文
386 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
baoyz 2010-03-19
  • 打赏
  • 举报
回复

HINSTANCE h = AfxGetResourceHandle();
HRSRC hResInfo = FindResource(h,IDR_EXE1,"EXE");
HGLOBAL hgRes = LoadResource(h,hResInfo);
void *pvRes = LockResource(hgRes);
long int cbRes = SizeofResource(h,hResInfo);
UnlockResource(hgRes);
HANDLE hFile = CreateFile("C:\\EXE1.EXE",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
DWORD cbWritten;
if(WriteFile(hFile,pvRes,cbRes,&cbWritten,0))
{AfxMessageBox("输出成功");}
else
{AfxMessageBox("输出失败");}
CloseHandle(hFile);
baoyz 2010-03-19
  • 打赏
  • 举报
回复

HINSTANCE h = AfxGetResourceHandle();
HRSRC hResInfo = FindResource(h,IDR_EXE1,"EXE");
HGLOBAL hgRes = LoadResource(h,hResInfo);
void *pvRes = LockResource(hgRes);
long int cbRes = SizeofResource(h,hResInfo);
UnlockResource(hgRes);
HANDLE hFile = CreateFile("C:\EXE1.EXE",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
DWORD cbWritten;
if(WriteFile(hFile,pvRes,cbRes,&cbWritten,0))
{AfxMessageBox("输出成功");}
else
{AfxMessageBox("输出失败");}
CloseHandle(hFile);
wuhuwy 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 laiyiling 的回复:]
下面是一段把资源导出为文件的代码.先把要打包的文件添加到VC项目中,类型自定(比如 "RES_DATA "),ID自定(比如ID_RES_DATA),那么如果要把这个资源再回复为文件就这么调用:
Res2File( MAKEINTRESOURCE(ID_RES_DATA), "RES_DATA ", "C:\\ResData.dat " )
BOOL Re……
[/Quote]
liumenghappy 2010-03-18
  • 打赏
  • 举报
回复
学习一下
lightsh 2010-03-12
  • 打赏
  • 举报
回复
1楼正解
Kudeet 2007-01-27
  • 打赏
  • 举报
回复
下面是一段把资源导出为文件的代码.先把要打包的文件添加到VC项目中,类型自定(比如"RES_DATA"),ID自定(比如ID_RES_DATA),那么如果要把这个资源再回复为文件就这么调用:
Res2File( MAKEINTRESOURCE(ID_RES_DATA), "RES_DATA", "C:\\ResData.dat" )

BOOL Res2File( LPCTSTR lpName, LPCTSTR lpType, LPCTSTR filename )
{
HRSRC hRes = ::FindResource( NULL, lpName, lpType );
HGLOBAL gl =::LoadResource( NULL, hRes );
LPVOID lp = ::LockResource( gl );
HANDLE fp = ::CreateFile( filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );
if( fp == INVALID_HANDLE_VALUE )
return FALSE;

DWORD a;
if( !::WriteFile( fp, lp, SizeofResource( NULL, hRes ), &a, NULL ) )
return FALSE;

CloseHandle( fp );
FreeResource( gl );
return TRUE;
}

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧