掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
厳密にアプリケーションの終了状況を把握するには? (ID:84740)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ご回答ありがとうございます。 >やりたい事がよく読みとれなかったので、外しているかもしれませんが、 すみません。 >案1) Shell関数の代わりに、WShShell.Runメソッドによる同期起動を使う。 なるほど、他のアプリケーションを同期起動すれば、絶対に終了を把握することが出来ますね。この方法を単純に使うと、他のアプリケーションが終了するまで起動した側のアプリケーションが止まってしまうということになるんですよね。起動した側のアプリケーションが止まってしまう状態になってほしくないので、起動した側のアプリケーションが止まってしまう状態にならなくて、しかも、他のアプリケーションを同期起動できるなら、とても完璧な解決策になります。しかし、こんなことはできるのでしょうか?(この質問はプロセスIDと関係ないので新しいスレッドに書くべきですが、すみません。) >案2) WaitForSingleObject APIによる待機監視を行う。 INFINITEを指定すると、監視すべき他のアプリケーションが終了したら、制御が返ってくるという動作をするAPIですよね。このご提案もとても十分な解決策と思います。しかし、制御が返ってこない間は、起動した側のアプリケーションが止まってしまう状態になってしまうので、どうにかして起動した側のアプリケーションが止まらずに、しかも、WaitForSingleObjectから制御が返ってくるのを待つことが出来れば、とてもありがたいです。(この問題は、ほぼ、上記のものと同じですよね。) >案3) WMIのWin32_Processクラスによる監視を行う。 まったく未知のクラスで、ネットで検索して調べましたけど、まったく知らなかったのでどう使ってよいのかあまりよく分かりませんでした。私の無知で申し訳ありませんが、Win32_Processクラスによる監視というもので、問題が解決できるかどうかを判断できませんでした。すみません。よく勉強いたします。 >プロセスIDという意味からすると、これはごく普通に起こることであって >なにもおかしな状況でないということは理解されていますでしょうか? はい。最近プロセスIDを使ってみて理解いたしました。同じプロセスIDが再び使われるということが普通に起こりうることは、理解しています。 >これはプロセスIDの意味をよく理解せず作ったロジックがまずいからで >はないですか? そうなのかもしれません。もともと、プロセスIDで非定常的に他のアプリケーションの終了状況を把握しようとしていたのが間違いであったのかもしれません。既にご指摘のように、他のアプリケーションを起動してから常に終了を監視していれば、終了状況は把握できるわけで、私のように、他のアプリケーションを起動してからかなり時間が経った後に不意に終了状況をチェックするという行動自体が間違いなのかもしれません。しかし、もしも、プロセスIDだけで、いつ終了状況をチェックしても、確実に自分の起動した他のアプリケーションの終了状況を把握することが出来るのなら、これが一番近道な解決策だと思い、質問させていただきました。皆様のありがたいご回答を拝見していますと、もともと出来ないことを質問してしまっているのかもしれませんが、もし、プロセスIDだけで、いつ終了状況をチェックしても、確実に自分の起動した他のアプリケーションの終了状況を把握することが出来る解決策がありましたら、ご教授よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.