CreateProcessでアプリが終了しない
ちょっとした変換ツールを作ろうと思い、ダイアログベースの
MFCアプリケーションを作成しました。
OKボタンが押された時にCreateProcess()で子プロセスを
起動して、終了したら結果表示して親プロセスも終了する
様にしようと思ったのですが、結果表示までは正常に
実行されるのですが、親プロセスが終了しません。
恐らくCreateProcess()に渡す引数が悪いのだと思うのですが、
どなたかわかる方がいらしたらご教示願います。
void CMscGenSelectorDlg::OnBnClickedOk()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof si );
si.cb = sizeof si;
ZeroMemory( &pi, sizeof pi );
// 子プロセス起動
CreateProcess(
NULL, // モジュール名
_T("mscgen.exe -Tpng hoge.msc"), // コマンドライン
NULL, // セキュリティ記述子
NULL, // セキュリティ記述子
FALSE, // ハンドルの継承オプション
0, // 作成のフラグ
NULL, // 新しい環境ブロック
NULL, // カレントディレクトリ名
&si, // スタートアップ情報
&pi); // プロセス情報
// 子プロセス終了待ち
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
// シーケンスチャート表示
ShellExecute( NULL, _T("open"), _T("hoge.png"), NULL, NULL, SW_SHOW );
// 終了
OnOK();
}
お礼
うおーっ。 ありがとうございます。うまくいきました。 感謝感謝です。 APIに関してまだ知識が浅いので また、質問する機会があるかと思いますが そのときは、よろしくお願いします。 ありがとうございました!!