WaitForSingleObjectによるバッチファイルの終了待ちについて
開発PC:Windows XP+VC6
実行PC:Windows XP or Windows7
MFCで作られたアプリからバッチファイルをモーダルで実行してバッチファイルの終了待ちをしたいと考えています。
バッチファイルは末尾に「pause」を入れて何らかのキー入力かウィンドウを閉じることで
終了とします。
・バッチファイル実行部
STARTUPINFO siStartInfo ;
PROCESS_INFORMATION piProcInfo ;
GetStartupInfo(&siStartInfo);
if(!CreateProcess(NULL,
"[cmd.exeのフルパス] /c [バッチファイルのフルパス]",
NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS,
NULL, NULL,
&siStartInfo,
&piProcInfo)){
return FALSE;
}
WaitForSingleObject(piProcInfo.hProcess,INFINITE);
CloseHandle(piProcInfo.hProcess);
CloseHandle(piProcInfo.hThread);
・バッチファイルの中身
@echo off
echo TestTest
pause
WaitForSingleObjectで終了待ちをしているのですが、
WindowsXP上で実行すると、プロンプト画面でキーの入力&ウィンドウ終了が出来ますが、
同じアプリをWindows7で実行すると、プロンプト画面でキーの入力もウィンドウの終了も出来ません。
WindowsXPとWindows7とで、WaitForSingleObjectの挙動が変わったのでしょうか?
■2015/06/05追記
下記の様にしたら出来ました。
while(WaitForSingleObject(piProcInfo.hProcess,100) == WAIT_TIMEOUT){
app->PumpMessage(); // 定期的にメッセージキューを消化させます
}
メッセージが処理されていなかったようです。