ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 22:24

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2008年5月27日(火) 19:48 
何回かご厄介になっていて、久しぶりにお伺いしたく、書き込みさせて頂きます。
(相変わらず、ヘルプ見まくり、コピペしまくりです・・・)

やりたい事は、
「ABのプログラムで、「MessageBox(hMainWnd,・・・)」 でメッセージボックスを
表示した時、そのメッセージボックスのハンドルを取得したい」
なんですが、可能でしょうか?

ウインドとかだとできたんですが、MessageBox だと、どう書けばいいか
わからず、いろんなヘルプ見ましたが、探せませんでした。

Dim hmsgbox As HANDLE
hmsgbox = MessageBox( hMainWnd,・・・)
とかにすると、「1」が入るみたいなんですが、これがMessageBox のハンドル
でしょうか?
これがハンドルなら、それをどう(IF ○○ = ○ Then)記述すれば
表示しているかどうかを判定できるかを教えて下さい。

申し訳ありませんが、よろしくお願いします。

ABのバージョンは、4.23
OSは、Windows2000 です


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2008年5月27日(火) 20:17 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
お住まい: 埼玉県東松山市
http://yokohama.cool.ne.jp/chokuto/uraw ... geBox.html
に、戻り値の説明があります。標準のヘルプにも書いてありますが。
1が返るという事は、OKが押されたという事でしょう。

MessageBoxのウインドウハンドルを取得するWinAPIはないようです。
ただ、CreateThread等でスレッドを作成しておいて、上手いタイミングで
FindWindowやEnumWindow等を使えばいけるかもしれません。
試してませんが。

一体MessageBoxのウインドウハンドルを利用して何をしようとしているのかが全くつかめてこないのですが、
CreateWindowなどを使うとハンドルは付いてくるので、少々面倒ですがそちらで代用する事も出来ます。
またはRADでモーダルウインドウ等を作ってもいいと思います。

ついでに言うと、MessageBox関数は同期する関数なので、処理が戻った時にはもう表示してません。

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
投稿記事Posted: 2008年5月28日(水) 11:20 
konisi どの
回答ありがとうございます。
引用:
http://yokohama.cool.ne.jp/chokuto/uraw ... geBox.html
に、戻り値の説明があります。標準のヘルプにも書いてありますが。
1が返るという事は、OKが押されたという事でしょう。
確かに標準のヘルプにも書いてありましたが、数値(1)とかでなく、「IDOK」とか
表に書いてある文字が帰ってくる・・・と思っていましたし、ハンドルを取得したかったので、
戻り値だった事に気付かず・・・でした。
debugをメッセージボックスの後にしていた為、確かに、「OK」押したりしてました f(^_^;)

引用:
一体MessageBoxのウインドウハンドルを利用して何をしようとしているのかが全くつかめてこないのですが、
CreateWindowなどを使うとハンドルは付いてくるので、少々面倒ですがそちらで代用する事も出来ます。
またはRADでモーダルウインドウ等を作ってもいいと思います。
ウイルスとかの類ではなく、ある一定時間(2~3時間おき)で、メッセージを
表示する・・・というのを作っています。
実は、会社で残業規制がかかり、ある曜日だけは残業しない様に・・・
という意味で、PC立ち上げたら、スタートアップでこのアプリが起動し、その時にメッセージ
(今日は定時の日)を表示させ、2~3時間おきに再度メッセージで注意を促す・・・
というものを作成中です。
タイマーでのメッセージ表示はできたのですが、OKを押さずにいると、次のメッセージ
表示の時に、前のメッセージボックスが残ったままで、どんどん増えていってしまう為、
それを消すか、もしくは、メッセージボックスが表示したままなら、次のメッセージを
表示しない、としたかったので、ハンドルが取得できたら、可能なのかな・・・と思って
ご質問させて頂きました。
※決して悪意のものではなく、自分と職場の数人で使用するものです。
(会社が基本的にフリーソフトの使用を禁じている為、作ろうとしました)

とりあえず、リンクして頂いたページを拝見しました。
OKを押したかどうかは判定できているみたいなので、これをうまく使ってみて
チャレンジしたいと思います。

追伸:
ちなみに、これは、タスクトレイに常駐させる予定です。
メインウインドを可視しない様にして、メッセージボックスだけ、時間間隔で
実行させる様にしてます。
スタートアップで起動させたら、タスクトレイにアイコン表示させる方法を
これから探すんですが、もしまたお伺いする事があった時には、よろしくお願いします。

ありがとうございました。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Ahrefs [Bot] & ゲスト[13人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean