我在VC中导入EXE后,WorkSpace中增加了一个IDR_EXE1档。现在我想在这个EXE打开的时候就让导入的IDR_EXE1也执行,不知道有什么方法。前提是不能将我要打开的EXE放在同一个目录,而要将程序打包到这我新建工程的EXE中。
我试了这样的方法,不过不行
HINSTANCE hInst = AfxGetInstanceHandle();
// Load the user-defined resource.
HRSRC hExeFile = ::FindResource(hInst, L"ie_menu.exe", L"EXE_RESOURCE");
HGLOBAL hRes = ::LoadResource(hInst, hExeFile);
DWORD dwSize = ::SizeofResource(hInst, hExeFile);
if (hRes != NULL)
{
UINT FAR* lpnRes = (UINT FAR*)::LockResource(hRes);
TRY
{
CFile file(L"ie_menu.exe", CFile::modeCreate | CFile::modeWrite);
file.Write(lpnRes, dwSize);
file.Flush();
}
CATCH(CFileException, e)
{
}
END_CATCH
::FreeResource(hRes);
}
我试了这样的方法,不过不行
HINSTANCE hInst = AfxGetInstanceHandle();
// Load the user-defined resource.
HRSRC hExeFile = ::FindResource(hInst, L"ie_menu.exe", L"EXE_RESOURCE");
HGLOBAL hRes = ::LoadResource(hInst, hExeFile);
DWORD dwSize = ::SizeofResource(hInst, hExeFile);
if (hRes != NULL)
{
UINT FAR* lpnRes = (UINT FAR*)::LockResource(hRes);
TRY
{
CFile file(L"ie_menu.exe", CFile::modeCreate | CFile::modeWrite);
file.Write(lpnRes, dwSize);
file.Flush();
}
CATCH(CFileException, e)
{
}
END_CATCH
::FreeResource(hRes);
}
解决方案 »
- 急!!!gSoap的WebService客户端调用java的WebService服务端方法实现下载xml文件,但返回的却是经过编码的东西.如何还原成xml文件呢?
- 如何判断本机连接远程指定端口(如23)是否防火墙拦截?
- 如何使用Microsoft Web Browser控件 响应里面的window.open的弹出窗口
- 我在写出一个DLL的时候遇到的问题
- 谁看过《ATL开发指南》!进来帮帮忙好吗!
- ########关于游戏中读取图片显示动画的问题#########
- 请问: CDialog dlg; if(dlg.DoModal() == IDOK){..}; 是否在{}结束时,对话框结束?
- 关于C++template问题,在link时出错
- 这里有没有博士什么的?呵!!!呵!!!
- 帮忙啊?我只能给这么多分!!!
- 一个基于MFC 利用厂商提供SDK编写视频采集程序 原来基本可用~重装系统后频繁报错。专家帮忙分析下原因吧。
- 粘贴板数据格式问题
按你的做法就可以,只是最后还要创建进程,用CreateProcess或ShellExecute等函数都可以。
楼主的意思是调用程序吗?那用ShellExecute 不是很方便吗?例如: 打开一个应用程序 ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );
WinExec
ShellExcute
CreateProcess
一打开就执行,可以放到main函数入口处或者Initinstance()里
不过又来了一个新的问题,就是我在运行新的程序后。我还要检测它是否有退出。如果它有退出的话就将整个对话框销毁(线程里判断),问题是在线程里面怎么能销毁主对话框呢。DestroyWindow和PostQuitMessage肯定是无效的。原因是因为这个线程没退出。我想在线程里面去销毁自己的HAND。各位有何良策呀
{
HWND hWnd1 = ::FindWindow(NULL,L"DD");
::PostMessage(hWnd1,WM_COMMAND,WM_CLOSE,0);
}
这样不行呀
另外用FindWindow容易找错窗口,最好通过线程参数来传递。