等待新进程完成它的初始化并等待用户输入。
例如:
BOOL StartProcess(char* strCmdLine)
{
BOOL bRet = FALSE;
STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;
memset(&sinfo, 0, sizeof(sinfo));
sinfo.cb = sizeof(STARTUPINFO);
char szDir[4];
szDir[0] = strCmdLine[0];
szDir[1] = strCmdLine[1];
szDir[2] = 0;
if (CreateProcess(0, strCmdLine, 0, 0, 0, 0, 0, szDir, &sinfo, &pinfo))
{
PushLog("进程已创建,等待初始化完成...");
if (WaitForInputIdle(pinfo.hProcess, 30000) == 0)
{
PushLog("进程创建完成,初始化完毕");
bRet = TRUE;
}
else
{
PushLog("%s在30秒内未初始化完成,或者有错误发生code=%d", strCmdLine, GetLastError());
}
CloseHandle(pinfo.hThread);
CloseHandle(pinfo.hProcess);
}
if (bRet == FALSE)
{
DWORD_G dwErr = GetLastError();
PushLog("%s在启动过程中有错误发生,code=%d", strCmdLine, dwErr);
}
return bRet;
}