<環境>
winNT、VB6
<要件>
親プログラムからタスクトレイに常駐する子プログラムを実行し、
親プログラムの終了時、子プログラムの終了を待ち親プログラムも
終了させたいです。
<現状>
そこで、常駐プログラムにSendMessageを送り終了させようと
考えたのですが、常駐プログラムのウインドウハンドルが
取得できずにうまくいきません。
1.親.exeのForm_LoadにShellより、子.exe起動
2.親.exeのコマンドボタンにより、FindWindow、SendMessage
子プログラムの終了を待って、親プログラム終了する
方法はありますでしょうか?
>SendMessageを送り終了させようと
「SendMessageをつかってWM_QUITメッセージを送り終了させようと」
ということですね?
>常駐プログラムのウインドウハンドルが取得できずにうまくいきません。
なぜ取得できないのですか?原因究明はしましたか?
取得できないことはありませんので取得してください。
簡単に済ますのであれば子プログラムから親プログラムにDDE等で自分の
ウィンドウハンドルを通知してやるという手もあります。
一つに限らずいろんなやり方を模索してみて下さい。
>子プログラムの終了を待って、親プログラム終了する
>方法はありますでしょうか?
Shellで起動しているのだからプロセスIDが分かっているはずですよね。
そのプロセスIDを使えば、起動したプロセスが終了したかどうかは判別
できます。
詳細は「VB プロセス 終了を待つ」でググッて見てください。
030さん 回答頂きありがとうございます。
解決しました。
>>SendMessageを送り終了させようと
>「SendMessageをつかってWM_QUITメッセージを送り終了させようと」
>ということですね?
はい
>>常駐プログラムのウインドウハンドルが取得できずにうまくいきません。
>なぜ取得できないのですか?原因究明はしましたか?
>取得できないことはありませんので取得してください。
>簡単に済ますのであれば子プログラムから親プログラムにDDE等で自分の
>ウィンドウハンドルを通知してやるという手もあります。
>一つに限らずいろんなやり方を模索してみて下さい。
ウインドウハンドル取得できました。
失礼しました、パラメーターの順番が逆でした・・・
>>子プログラムの終了を待って、親プログラム終了する
>>方法はありますでしょうか?
プロセスを強制終了させること無く、メッセージを送り
子プログラム側で終了処理後、終了する事がでしました。
結局、子プログラムのQueryUnloadでメッセージボックスを出して、
分岐処理を入れていたのが原因だったようです。
ツイート | ![]() |