0

アプリを新しいウィンドウで開きたいので、CREATE_NEW_CONSOLEオプションを指定してCreateProcessAPIを使用しています。TerminateProcessを呼び出すと、ウィンドウがすぐに閉じられるのではなく、遅れて閉じられます。どういうわけかすぐにウィンドウを閉じるように強制することは可能ですか?

私は現在Windows764ビットで実行していますが、作業しているプログラムは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 に答える