OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

コンソールアプリの起動結果待ち→WaitForInputIdle??

  • すぐに回答を!
  • 質問No.196729
  • 閲覧数1907
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 35% (12/34)

こんばんは。
以前にも質問したのですが、CreateProcessで起動させたプログラムの起動を待つために、WaitForInputIdleを使用と教わったのですが、コンソールアプリの起動の場合はWaitForInputIdleは待たずにすぐに結果を返してしまうのです。
WaitForInputIdleと同じようなことができ、かつ、コンソールアプリにも使える方法、ご存知の方がいらっしゃったら、教えてください...
よろしくお願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル12

ベストアンサー率 45% (210/459)

こんにちは。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();
お礼コメント
dole

お礼率 35% (12/34)

お礼が遅くなって申し訳ありません。
無事、解決しました。
ありがとうございました。
投稿日時 - 2002-01-22 21:52:22
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ