0

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

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

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

4

1 回答 1

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);

终止过程没有延迟。

在此处输入图像描述

尝试使用procmon找出您的案例中发生延迟的位置。

于 2013-01-22T07:49:24.833 回答