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

解决方案 »

  1.   

    应用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);
    }
      

  2.   

    CreateProcess的返回值是一个内核对象,当这个进程结束时,内核对被通知,所以用WaitForSingleObject来等待这个返回值,进程结束后WaitForSingleObject会停止等待.