intermediate process. It end very promptly, thus the handle is signalled. If
elevated process ID, they will be different.
Here is my code. It pops up a message box with text "Wait object". But I
can still see the dialog box of that process.
DWORD createProcess(CString applicationPath, CString parameter) {
STARTUPINFO startupInfo;
ZeroMemory(&startupInfo, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
PROCESS_INFORMATION processInfo;
ZeroMemory(&processInfo, sizeof(processInfo));
DWORD returnCode = 0;
parameter = applicationPath + _T(' ') + parameter;
if (!CreateProcess(
NULL,
parameter.LockBuffer(),
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&startupInfo,
&processInfo)) {
returnCode = GetLastError();
}
parameter.UnlockBuffer();
switch (WaitForSingleObject(processInfo.hProcess, INFINITE)) {
case WAIT_ABANDONED:
AfxMessageBox(_T("Wait abandoned"));
break;
case WAIT_TIMEOUT:
AfxMessageBox(_T("Wait timeout"));
break;
case WAIT_OBJECT_0:
AfxMessageBox(_T("Wait object"));
break;
case WAIT_FAILED:
AfxMessageBox(_T("Wait failed"));
break;
}
CloseHandle(processInfo.hThread);
CloseHandle(processInfo.hProcess);
// zero if success
// non-zero if fail
return returnCode;
}
"Goran" <goran.pusic@gmail.com> ???
news:2c3cf2af-f739-4b5e-80c7-99176c19ed17@f10g2000vbf.googlegroups.com
???...
On Sep 16, 12:56 pm, "Kilo" <k...@yahoo.com.hk> wrote:
I have called CreateProcess to create a process. Then I called
WaitForSingleObject with INFINITE timeout. However, it does not wait.
It does. Chances are that your code is wrong.