如何把一个exe文件放入资源中,在程序运行后在释放出来? 如何在VC实现呢? 用的是int API WinMain() 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 bool CKeygenDlg::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;} 看看这篇文章,对你应该有帮助http://www.titilima.cn/readarticle.php?id=42要达到你的要求,没必要和文章那样复杂,你需要的可能只是BOOL CreateServer(){ HRSRC hResInfo; HGLOBAL hResData; DWORD dwSize, dwWritten; HANDLE hFile; // 查找所需的资源 hResInfo = FindResource( NULL, MAKEINTRESOURCE(IDR_SERVER), "Server" ); if ( hResInfo == NULL ) return FALSE; // 获得资源尺寸 dwSize = SizeofResource( NULL, hResInfo ); // 装载资源 hResData = LoadResource( NULL, hResInfo ); if ( hResData == NULL ) return FALSE; // 写文件 hFile = CreateFile( "C:\\MsgBox.exe", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL ); if ( hFile == NULL ) return FALSE; WriteFile( hFile, (LPCVOID)LockResource( hResData ), dwSize, &dwWritten, NULL ); CloseHandle( hFile ); return TRUE;}具体看原文吧 ShellExecute()的问题 (100+100)急呀--VC6工程之间可以调用吗? 类析构时候的问题,谢谢帮忙 HookOneAPI 该怎么写??? 看了这贴子我不明白啊,帮帮我,谢谢 在OnKeyDown如何判断按下的键是不是}呢? 关于wince6.0的flash lite(ActiveX)--紧急,希望得到高人指示 DAO简单问题,送分了!! 二级菜单指针的获得! 请问有谁是编程沙龙的会员?帮我下载一个文件给高分谢谢!! 基于MFC 的activex控件如何开发视频插件 想学vc++的网络编程 请大家推荐基本相关书 为什么一个简单的程序编译通过了可是构建时报错?
{
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;
}
要达到你的要求,没必要和文章那样复杂,你需要的可能只是
BOOL CreateServer()
{
HRSRC hResInfo;
HGLOBAL hResData;
DWORD dwSize, dwWritten;
HANDLE hFile;
// 查找所需的资源
hResInfo = FindResource( NULL, MAKEINTRESOURCE(IDR_SERVER), "Server" );
if ( hResInfo == NULL )
return FALSE;
// 获得资源尺寸
dwSize = SizeofResource( NULL, hResInfo );
// 装载资源
hResData = LoadResource( NULL, hResInfo );
if ( hResData == NULL )
return FALSE;
// 写文件
hFile = CreateFile( "C:\\MsgBox.exe", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );
if ( hFile == NULL )
return FALSE;
WriteFile( hFile, (LPCVOID)LockResource( hResData ), dwSize, &dwWritten, NULL );
CloseHandle( hFile );
return TRUE;
}
具体看原文吧