外部プログラムの起動と終了判定


 外部プログラムを起動して、そのプロセスが終了したかどうかを判定します。

<サンプル・コード>

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("外部プロセスが終了しました。");
}