代码如下
ShellExecute(NULL, "open", "aa.exe", NULL, NULL, SW_SHOWDEFAULT);aa.exe是一个console程序,完成一定的功能就退出了,没有消息循环.请问,我如何才能让我的主程序(执行shellexecute的程序)与aa.exe同步?
也就是判断aa.exe执行完毕后主程序才继续往执行
ShellExecute(NULL, "open", "aa.exe", NULL, NULL, SW_SHOWDEFAULT);aa.exe是一个console程序,完成一定的功能就退出了,没有消息循环.请问,我如何才能让我的主程序(执行shellexecute的程序)与aa.exe同步?
也就是判断aa.exe执行完毕后主程序才继续往执行
解决方案 »
- 关于使用windows组件的一个疑问
- 大于2的32次方 的整数如何存放
- 要求内网内某个主机如果没有安装客户端软件,则这台主机不能上内网.怎么做?
- 请教:如何利用浏览器插件完全控制浏览器与服务器的交互?
- 头痛问题:编辑框的内容中光标所在位置(光标位置是任意的)的前一个字符如何获得?
- 请问我该如何将调用MFC类的成员函数后自动弹出的对话框给屏蔽掉呢?
- 请教两个问题(在线等)
- 怎样让窗口接收鼠标的WM_MOUSELEAVE和WM_MOUSEHOVER消息(分可加,欢迎讨论)
- 广州天河区,三房一厅,求合租!
- 怎么不行?--菜鸟的问题
- 请问VC项目中Resouces Files中的String Table的用处是什么?
- 基础问题:怎样用ClassWizard创建派生新类?
PROCESS_INFORMATION stProcessInfo;
memset(&stStartUpInfo,0,sizeof(STARTUPINFO));
stStartUpInfo.cb = sizeof(STARTUPINFO);
// szCommandLine放应用程序的路径
BOOL bOK = CreateProcess(NULL,(LPTSTR)szCommandLine,NULL,NULL,TRUE, NORMAL_PRIORITY_CLASS,NULL,NULL,&stStartUpInfo,&stProcessInfo);
if ( FALSE == bOK ) {
return -1;
}// 等待程序执行完成
WaitForSingleObject(stProcessInfo.hProcess,INFINITE);
CloseHandle(stProcessInfo.hProcess);
memset(&sei, 0, sizeof(SHELLEXECUTEINFO)); sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = _T("open");
sei.lpFile = _T("aa.exe");
sei.nShow = SW_SHOWDEFAULT;
ShellExecuteEx(&sei);WaitForSingleObject(sei.hProcess, INFINITE);
CloseHandle(sei.hProcess);