掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
厳密にアプリケーションの終了状況を把握するには? (ID:84733)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
先日、こちらの掲示板に質問させていただき、「たらこ」さんから「プロセスIDからウィンドウハンドルの取得」方法をご教授いただきました。おかげでウィンドウハンドルを取得することはできたのですが、私の勘違いで本来の問題が私の力では解決できませんでした。そこで、恐縮ですが、もう一度質問をさせていただいております。 本来の私が解決したかった問題とは、他のアプリケーションをShell関数で起動して、戻り値のプロセスIDからこのアプリケーションの終了状況をチェックしたいというものです。 いろいろなホームページを探し回って、「GetExitCodeProcess」というAPI関数を用いればこの機能を実現できるというところまではたどり着くことができました。確かに、このAPI関数を用いれば終了状況をチェックすることができるのですが、まれに終了状況を誤ることがあることに気がつきました。 「終了状況を誤る」と書きましたが、本当はAPI関数は正しく終了状況をチェックしています。しかし、次のような使い方をすると、まれに終了しているのに終了していないという返事が返ってきました。 1.Shell関数で他のアプリケーションを起動させて、戻り値のプロセスIDを保持しておく。 2.しばらく放置して、関係のない、いろいろなソフトを起動させたり終了させたりする。 3.「1.」で起動させた他のアプリケーションを終了させる。 4.再び、しばらく放置して、関係のない、いろいろなソフトを起動させたり終了させたりする。 5.保持しておいたプロセスIDを使って、「GetExitCodeProcess」を呼び出して終了状況を取得する。 6.すると、「GetExitCodeProcess」は終了していないという値を返す。 私が推測するに、「4.」において「関係のない、いろいろなソフトを起動させたり終了させたり」したために、保持しておいたプロセスIDと同じ値のプロセスIDでアプリケーションが起動して、このアプリケーションの終了状況を返しているのだと思います。一度終了したアプリケーションのプロセスIDが、他のアプリケーションの起動の際に同じプロセスIDが使われると、「GetExitCodeProcess」では厳密な終了状況を把握することができません。 そこで、プロセスIDからウィンドウハンドルを取得して、そこから得られる情報もチェックして、Shell関数で起動させたアプリケーションかどうかをチェックしようとしたのですが、まったく同じアプリケーションであった場合、値が同じになってしまうことがあり、厳密にチェックすることができませんでした。 どなたか厳密にアプリケーションの終了状況を把握できる方法をご教授お願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.