終了待ち – プログラミング – Home

通知
すべてクリア

[解決済] 終了待ち


329
 329
(@329)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

開発環境 VC6.0 WIN NT4.0 MFC

外部アプリケーションを起動して。そのアプリの終了を待つとゆう事をやっているんですけど
WaitForSingleObject(pi.hProcess,INFINITE);
のところで起動したアプリが終了するまで待つとゆう処理があって。
ここで終了待機。になってしまいます。

私がやりたい事は。アプリを起動したらボタンを無効にして。
アプリが終了したらボタンを有効にする。ということです。

終了を待っている間も他の処理は続けたいんですけど
WaitForSingleObject(pi.hProcess,INFINITE);
の所で終了を待っているので先に進みません。
なにか良い方法はありませんか?

ソースコード
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
CreateProcess(NULL,RIRE_SOUTI,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
m_btn1.EnableWindow(FALSE); //ボタン無効
//閉じられるまで待つ
WaitForSingleObject(pi.hProcess,INFINITE);
m_btn1.EnableWindow(TRUE); //ボタン有効
//プロセスハンドルを開放
CloseHandle(pi.hProcess);


引用未解決
トピックタグ
329
 329
(@329)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

追加発言です。

調べていたらMsgWaitForMultipleObjects()
がよいと書いてあったんですけど。
よく使い方が分りません。
分る方がいましたら教えて下さい。


返信引用
ちる
 ちる
(@ちる)
ゲスト
結合: 23年前
投稿: 77
 

WaitForSingleObjectの引数-dwMillisecondsを0にするとを
現在の状態を即返すみたいです。

ですので
タイマーイベントでWAIT_OBJECT_0(終了の合図)の値を返すの
を見に行くというのはどうでしょうか


返信引用
ちる
 ちる
(@ちる)
ゲスト
結合: 23年前
投稿: 77
 

あっ、終了した時の合図はこっちかもしれません

WAIT_ABANDONED


返信引用
329
 329
(@329)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

WaitForSingleObjectとどう違うんですか?


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

> WaitForSingleObjectとどう違うんですか?

何と比べて,ですか?


返信引用
329
 329
(@329)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

WaitForSingleObject()

MsgWaitForMultipleObjects()
です。


返信引用
ちる
 ちる
(@ちる)
ゲスト
結合: 23年前
投稿: 77
 

MsgWaitForMultipleObjects() の方はどういう機能かは分からなかったんですが
329さんの作りたいものはWaitForSingleObject() 関数で十分ではないでしょうか?

WaitForSingleObject() 関数についてはMSDNに詳しい解説が載ってますよ^-^


返信引用
329
 329
(@329)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

ここに描画させたいなら
MsgWaitForMultipleObjects()
をつかうと書いてあるんですけど。

http://mfc.acty-net.ne.jp/ml/mfc/logTop/logAll/00015825.shtml
再描画が旨くいきません。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

MsgWaitForMultipleObjectsのヘルプ
http://www.microsoft.com/japan/msdn/library/ja/jpdllpro/html/_win32_msgwaitformultipleobjects.asp
とか,WaitForSingleObjectのヘルプ
http://www.microsoft.com/japan/msdn/library/ja/jpdllpro/html/_win32_waitforsingleobject.asp
とかは読みましたか?

MsgWaitForMultipleObjects使うよりも,ちるさんが書かれているように,
WaitForSingleObjectとタイマー使ってチェックする方が簡単だと思いますけどね。


返信引用
ogmmm
 ogmmm
(@ogmmm)
ゲスト
結合: 23年前
投稿: 2
 

スレッドにするのが簡単です。


返信引用
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 23年前
投稿: 280
 

これって、ひょっとしたら起動される側のアプリケーションに
二重起動防止を行えばすむ問題じゃないんですか?


返信引用
ogmmm
 ogmmm
(@ogmmm)
ゲスト
結合: 23年前
投稿: 2
 

参考までに
こんな感じです。
http://www3.justnet.ne.jp/~ogmmm/prog.htm
最近はSDKでやってますが。


返信引用
329
 329
(@329)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

皆さん有り難う御座いました。
新しくスレッドを作成しそのスレッドでプロセスを起動後、終了するまで待機させ
終了後メッセージを送る事でアプリケーションの終了を知るようにしました。参考までに↓
http://cgi23.plala.or.jp/a-w-h/mfc/getapend.html


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました