- - PR -
[VB.NET]Windowsアプリケーションでの無入力監視
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-07 12:01
紅茶と申します。いつも拝見させて頂いています。
さっそくですがお知恵をお借りしたく質問させて頂きます。 VB.NETによるWindowsアプリケーションにおいて、「一定の時間 何らかの操作がなかった場合初期画面に戻る。」という要件が あります。この要件を実現するにあたり、タイマーコントロール を使用して初期画面に戻るようにし、タイマーをマウスイベント でリセットするようにしています。 しかしながら、この方法ではフォーム上に配置されたコントロール のイベントを拾うことができずにタイマーがリセットされません。 すべてのコントロールに対してハンドラを登録すれば実現できそう ではありますが、他にスマートなやり方はありませんでしょうか? キーボード操作に関しては、KeyPreviewというプロパティがある ようですが・・・ | ||||||||||||||||
|
投稿日時: 2006-02-07 12:58
今回の場合は、こちらが参考になるのかな。 keyPreviewはあって、mousePreviewはない?? マウスやキーボードに拘らず、メッセージ監視で良いと思いますよ。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-02-07 16:18
じゃんぬねっとさん
いつもご回答ありがとうございます。 またしても過去スレがあったようで; 結論から申しますと、子フォームから親フォームへ通知されるWMを 拾ってみたところ、やはり一部(WM_MOUSEMOVEでしょうか?)WMは 拾えないようです。しっかり確認したわけではありませんが一覧を 見た限りでは見当たらなかったです。よって、WMを使用するケース でも継承コントールを作成しなければならないと判断したので、 スマートではありませんがハンドラを登録していくという形で解決 しました。(緊急更改のため辛いところですが;) 次回があればまた検討したいと思います。 ありがとうございました。 | ||||||||||||||||
|
投稿日時: 2006-02-07 16:36
何故いきなり「子フォーム」「親フォーム」という文言が出てくるんですか? 先の投稿までは、そんな構成は感じ取れなかったのですが...
コントロールの上となると、WM_SETCURSOR 系統くらいになりますか。(多分) ただ、Button フェイスなコントロールは、フォームは何も拾わないかも。
うーん。
そこまでスマートでないこともないでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-02-07 16:40
いやいやいや、だからApplication.AddMessageFilterが最後であがっているでしょ。
これは、メッセージループでメッセージをディスパッチする前に取得するのでアプリケーションが取得したすべてのメッセージを捉えることが出来るはず(KeyPreviewは確かこれで実現されている)。 | ||||||||||||||||
|
投稿日時: 2006-02-07 18:20
>じゃんぬねっとさん
失礼致しました。「親フォーム」⇒「フォーム」、「子フォーム」⇒「コントロール」 と読み替えてください。当方、Windows GUI 開発が初めてなもので文言を混同させて しまいました。申し訳ありません(汗)
当該アプリでは、コントロール下にもコントロールを持っていたり動的に生成 してる部分が多く見られたので ControlAdded と併せてハンドラ登録の再帰呼び出し 等が必要だったのです。(コード量的にはたいしたことはないですが) >yaさん Application.AddMessageFilterに関しては調べてみます。 ありがとうございます。 | ||||||||||||||||
|
投稿日時: 2006-02-08 11:30
Application.AddMessageFilter使用して過去スレ通り下記のように実装することが
できました。
>じゃんぬねっとさん、yaさん 既知の質問にかかわらずご丁寧な対応に感謝です。 本当にありがとうございました。 |
1