- ベストアンサー
コンソールアプリの起動結果待ち→WaitForInputIdle??
こんばんは。 以前にも質問したのですが、CreateProcessで起動させたプログラムの起動を待つために、WaitForInputIdleを使用と教わったのですが、コンソールアプリの起動の場合はWaitForInputIdleは待たずにすぐに結果を返してしまうのです。 WaitForInputIdleと同じようなことができ、かつ、コンソールアプリにも使える方法、ご存知の方がいらっしゃったら、教えてください... よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。itohhといいます。 >コンソールアプリの起動の場合はWaitForInputIdleは >待たずにすぐに結果を返してしまうのです。 WaitForInputIdle関数は、ウィンドウを持つアプリケーションでなくては正常に動作しません。 最終的にどういうことをしたいのかが解りませんが、 EventオブジェクトとCSingleLockオブジェクトを使ってみては如何ですか? 簡単なサンプルを載せておきますので参考にしてください。 << 親プロセス >> CEvent* m_Event=NULL; // 子プロセスを待つためのイベントを作成する。 m_Event = new CEvent( FALSE, FALSE, "Wait_Event" ); CSingleLock wkWait( CSyncObject* m_Event ); // // 子スレッドを起動するための、CreateProcess関数を実行する。 // // 子プロセスのm_Event->SetEvent()が実行されるまで待機する。 wkWait.Lock( INFINITE ); ----------------------------------------------- << 子プロセス >> 起動直後の初期処理が終わった後。 CEvent* m_Event=NULL; // Eventモジュールをシグナル状態にする // 3番目の引数は親プロセスと同じにしなければいけない m_Event = new CEvent( FALSE, FALSE, "Wait_Event" ); m_Event->SetEvent();
お礼
お礼が遅くなって申し訳ありません。 無事、解決しました。 ありがとうございました。