- PR -

他プロセスの状態を取得する

1
投稿者投稿内容
ぐゎし
会議室デビュー日: 2004/04/13
投稿数: 10
投稿日時: 2005-12-07 15:41
vb.netにおいての質問です。

x.exe内でshell関数で起動したa.exeで異常終了が発生し、
異常を告げるメッセージボックスが出た状態で止まった
ままとします。x.exeはa.exeの状態を監視するプログラム
なので、メッセージボックスが出たままの状態であれば
「異常終了」とみなし強制的にa.exeを終了させたいのですが

他プロセスで「メッセージボックスが起動している」といった
状態を取得するにはどうすれば良いのでしょうか。

ご存知の方がいらっしゃればご教示願います。

[ メッセージ編集済み 編集者: ぐゎし 編集日時 2005-12-07 16:06 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-07 19:09
こんにちは。

もし、a.exe のソースを触れるような状況、つまりどちらも自分で開発している状況ならば、セマフォやイベント等のカーネルオブジェクトを使うというのはどうでしょうか。

_________________
囚人のジレンマな日々
ぐゎし
会議室デビュー日: 2004/04/13
投稿数: 10
投稿日時: 2005-12-07 19:47
囚人様、ご返信ありがとうございます。

a.exeのソースは触れる状況にある事はあるのですが、
他にソースが触れないb.exe,c.exeの状態も同時に
監視する必要があるので、x.exe単体で状態が
判るようにしたいのです。

APIのGetWindow関数で子ウィンドウの存在チェック等を
試したのですが上手くいきませんでした。
ぐゎし
会議室デビュー日: 2004/04/13
投稿数: 10
投稿日時: 2005-12-08 20:10
以下のやり方で解決しました。


@API[EnumWindows]で全ウィンドウハンドルを取得
A取得したウィンドウハンドルの親ハンドルをAPI[Getwindow]で取得
BAがメッセージボックスを起動しているプログラムのウィンドウハンドルかどうかを比較

上記手順で解決しました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)