在vc中将文件作为资源放入程序中,根据需要再还原为文件

在vc中将文件作为资源放入程序中,待需要使用时将其释放调用,可以将*.exe、*.dll、*.bat、音乐等作为资源。

1. 导入文件资源:点击插入->资源->自定义,输入“bin”,然后在资源视图中右击,点击 引入,选择需要添加的文件,在跳出的“自定义资源类型”对话框中输入“bin”,确定。这样文件就作为资源添加进来了,可以修改该资源的ID号,这里改为“IDR_BIN_TEST”.

2. 释放该资源:

void CXXXDlg::OnButton1()
{
// TODO: Add your control notification handler code here
DWORD dwWritten = 0;
HMODULE hInstance = ::GetModuleHandle(NULL);
HRSRC hSvcExecutableRes = ::FindResource(hInstance,
   MAKEINTRESOURCE(IDR_BIN_TEST),
   _T("BIN") );
HGLOBAL hSvcExecutable = ::LoadResource(hInstance, hSvcExecutableRes);
LPVOID pSvcExecutable = ::LockResource(hSvcExecutable );
if(pSvcExecutable == NULL)
{
//   AfxMessageBox("psvcexecutable错误!");
   return;
}
DWORD dwSvcExecutableSize = ::SizeofResource(hInstance,hSvcExecutableRes);
TCHAR szSvcExePath[_MAX_PATH];
   strcpy(szSvcExePath,"c://test.exe");
HANDLE hFileSvcExecutable = CreateFile(szSvcExePath,
   GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if ( hFileSvcExecutable == INVALID_HANDLE_VALUE )
{
//   AfxMessageBox("错误2");
   return ;
}
WriteFile( hFileSvcExecutable, pSvcExecutable, dwSvcExecutableSize, &dwWritten, NULL );
CloseHandle( hFileSvcExecutable );  
}

这样该资源就被释放到c盘下了,保存为test.exe,当需要调用它时可以用ShellExecute、WinExec、ShellExec、CreateProcess等函数。

如可以通过下面的语句进行调用:
 ShellExecute(NULL,"open","c://test.exe",NULL,NULL,SW_SHOWNORMAL);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值