TerminateProcess()不会立即关闭打开的窗口

时间:2013-01-21 17:19:35

标签: windows createprocess

我正在使用带有 CREATE_NEW_CONSOLE 选项的 CreateProcess API,因为我希望在新窗口中打开该应用。 当我调用 TerminateProcess 时,它不会立即关闭窗口,而是延迟。是否有可能以某种方式迫使它立即关闭窗户?

我目前在Windows7 64bit上运行,但我正在处理的程序不应该依赖于WIN版本。

我想使用 CREATE_NEW_CONSOLE ,以便主窗口不会被新应用程序劫持。

1 个答案:

答案 0 :(得分:1)

我尝试用CREATE_NEW_CONSOLE标志重现该问题。

STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
TCHAR szCommand[MAX_PATH];
_sntprintf_s(szCommand, MAX_PATH, _T("%s"), _T("c:\\windows\\system32\\cmd.exe"));
DWORD res = CreateProcess(NULL, szCommand, NULL, NULL, FALSE, 
                          CREATE_NEW_CONSOLE, 
                          NULL, NULL, &si, &pi);
TerminateProcess(pi.hProcess, NULL);

终止过程没有延迟。

enter image description here

尝试使用procmon来确定案件中发生延迟的位置。