我正在使用带有 CREATE_NEW_CONSOLE 选项的 CreateProcess API,因为我希望在新窗口中打开该应用。 当我调用 TerminateProcess 时,它不会立即关闭窗口,而是延迟。是否有可能以某种方式迫使它立即关闭窗户?
我目前在Windows7 64bit上运行,但我正在处理的程序不应该依赖于WIN版本。
我想使用 CREATE_NEW_CONSOLE ,以便主窗口不会被新应用程序劫持。
答案 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);
终止过程没有延迟。
尝试使用procmon来确定案件中发生延迟的位置。