读书人

EXE程序?解决办法

发布时间: 2012-02-22 19:36:55 作者: rapoo

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会停止等待.

读书人网 >VC/MFC

热点推荐