MSGBOXが表示されているかどうか調べるには


小心者  2005-02-11 02:55:30  No: 88403

お世話になります。
現在、VB6.0(SP5) XPでAPP監視プログラムを開発しているのですが、プログラム実行中にエラーメッセージ等のMSGBOXが表示された場合の
処理をしたいですが、よい方法が浮びません。
一応、そのAPPがアクティブになっているときは、GetActiveWindowでハンドルを取得し、該当するクラス名が"#32770"の場合は、判断できています。
但し、他のAPPを操作中(非アクティブ)にそのAPPでMSGBOXが表示された場合は、うまくいきません。どうすればよろしいでしょうか。他のよい方法があればご教授願います。
よろしくお願いします。


NV  URL  2005-02-11 03:40:26  No: 88404

GetWindows関数(API)を使えばできるかもしれません。


小心者  2005-02-11 07:25:44  No: 88405

NVさん、返事ありがとうございます。
やっぱ使い方がまずかったのかうまくいかないですね。
もうちょっとかんばってみます。
MSGBOXのハンドルをうまく取得できないかな。。。


IMA  2005-02-14 13:43:13  No: 88406

以前に回答したものですが、参考になれば

http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200403/04030020.txt


小心者  2005-02-15 01:24:10  No: 88407

IMAさん
サイトを見せてもらったのですが、いまいちよくわかりません。
すいません。
APPが非アクティブになった場合、トップレベルのWindowのハンドルは
どうやって取得するのでしょうか。
(Screen.ActiveForm.Hwndだと思ってやってみたのですが、アクティブ時にGetActiveWindowで取得したハンドルと違っていました。)


ガッ  2005-02-15 01:36:57  No: 88408

GetActiveWindow()はWindows全体でアクティブなウィンドウかと。
Screen.AcrtiveFormは動いているプロセス内の、アクティブなフォームのことだと思われ…


小心者  2005-02-15 02:17:20  No: 88409

で、APPが非アクティブになった場合、そのAPPの現在のトップレベルのWindowのハンドルをどうやって取得するんでしょうかっていうのを質問したかったのです。


ガッ  2005-02-15 02:46:12  No: 88410

レスが帰ってきたので、俺も返さないとな…
GetTopWindowとか、GetParentWindowとか、EnumChildWindowsとか、駄目だった?


除菌  2005-02-15 03:28:53  No: 88411

> サイトを見せてもらったのですが、いまいちよくわかりません。

読む気もなかったのかな。
この言い方だと、調べてないのバレバレですよ。
見たのならば、何がわからないのかかけるはず。


。。。  2005-02-15 03:52:13  No: 88412

>で、APPが非アクティブになった場合、そのAPPの現在のトップレベルのWindowのハンドルをどうやって取得するんでしょうかっていうのを質問したかったのです
なんか問題が変わってますね。
MSGBOXが表示されているかどうかを知りたいんじゃないですか?
MSGBOXに限ってであればEnumWindowsとEnumChildWindowsで全てのウィンドウが
列挙できるから、そこからクラス名が"#32770"のウィンドウを探してやるだけ
じゃないですか?


ひろ  2005-02-15 04:40:15  No: 88413

Msgbox を監視するという実装方針は本当に適切なのでしょうか?

監視対象のプログラムの作者に改造をお願いすることが出来るのなら、

・Msgboxを出すときに、別のプログラムからも容易にアクセスできるデータ保持領  域
  (例えば、ログファイルファイルとか、mdbファイルとか、イベントログとか)

  にもメッセージを書き込む

・別プログラムはそのデータ保持領域を監視する

というような実装でも良いように思いますが。


小心者  2005-02-15 18:11:38  No: 88414

みなさん、レスありがとうございます。
>読む気もなかったのかな。
>この言い方だと、調べてないのバレバレですよ。
>見たのならば、何がわからないのかかけるはず。
実は、英語は大の苦手なのでこういう言い方をしました。申し訳ない。
また、EnumWindowsとEnumChildWindowsのAPIもありましたね。
これで試してみます。


マルチポスト  2005-02-15 18:49:48  No: 88415

そんなことより、マルチポストはいけないでしょ。
http://freedom.mitene.or.jp/~sugisita/papa/cgi/korobbs.cgi


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加