外部プログラムの起動と終了判定
外部プログラムを起動して、そのプロセスが終了したかどうかを判定します。
<サンプル・コード>
void CProctrlDlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
int ret_code;
DWORD lpExitCode;
PROCESS_INFORMATION pro_id;
STARTUPINFO str_inf;
//-------------------------
// pro_id構造体初期化
ZeroMemory( &pro_id , sizeof(PROCESS_INFORMATION));
//-------------------------
// str_inf構造体初期化
ZeroMemory( &str_inf , sizeof(STARTUPINFO));
str_inf.cb = sizeof(STARTUPINFO);
str_inf.dwFlags = STARTF_USESHOWWINDOW;
str_inf.wShowWindow = SW_SHOWNORMAL;
//-------------------------
// 外部プロセスの実行
ret_code = CreateProcess( NULL, "calc.exe", NULL, NULL, FALSE, 0, NULL, NULL, &str_inf, &pro_id);
//--------------------------
// プロセスの終了待ちループ
lpExitCode = STILL_ACTIVE;
while (lpExitCode == STILL_ACTIVE ) {
// 終了コードを取得
GetExitCodeProcess( pro_id.hProcess , &lpExitCode ) ;
}
CloseHandle(pro_id.hProcess);
AfxMessageBox("外部プロセスが終了しました。");
}