首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

EXE程序?解决办法

2012-02-22 
EXE程序??请问VC中用CreateProcess启动一个EXE程序后怎么判断这个EXE程序是否结束或者什么时候结束?多谢[

EXE程序??
请问VC中用CreateProcess启动一个EXE程序后怎么判断这个EXE程序是否结束或者什么时候结束?多谢

[解决办法]
应用ShellExecute等待另一进程终止

SHELLEXECUTEINFO exeInfo;
exeInfo.cbSize = sizeof(SHELLEXECUTEINFO);
exeInfo.fMask = (SEE_MASK_DOENVSUBST|SEE_MASK_FLAG_DDEWAIT|0x04000000|SEE_MASK_NOCLOSEPROCESS|SEE_MASK_NO_CONSOLE);
exeInfo.hwnd = NULL;
exeInfo.lpVerb = "open ";
exeInfo.lpFile = (LPCTSTR)路径&文件名;
exeInfo.lpParameters = NULL;
exeInfo.lpDirectory = NULL;
exeInfo.nShow = SW_SHOWNORMAL;
exeInfo.hInstApp = NULL;
exeInfo.lpIDList = NULL;
exeInfo.lpClass = NULL;
exeInfo.hkeyClass = NULL;
exeInfo.dwHotKey = NULL;
exeInfo.hMonitor = NULL;
exeInfo.hIcon = NULL;
exeInfo.hProcess = NULL;

::ShellExecuteEx(&exeInfo);
if(exeInfo.hProcess)
{
::WaitForSingleObject(exeInfo.hProcess,INFINITE);
::CloseHandle(exeInfo.hProcess);
}
[解决办法]
CreateProcess的返回值是一个内核对象,当这个进程结束时,内核对被通知,所以用WaitForSingleObject来等待这个返回值,进程结束后WaitForSingleObject会停止等待.

热点排行