No.1
- 回答日時:
どもども田吾作7です。
処理ロジックとしては、、、
フォームのResizeやフォームと各コントロールのMOSEDOWN、KEYDOWNなどのイベントにそれぞれフラグを立てる必要があります。
もしフォームの移動もイベントの認識をしたいのであれば、プロセス監視が必要になります。
Spyって使ったことありますか?
VBアプリケーションだけでなく、Windowsの各ウィンドウやアプリケーション、またはアプリケーションの中の各コントロールは、Windowsからのメッセージを受けて、そのメッセージの種類により、動作します。もちろんフォームの位置の移動にも、フォームのサイズの変更開始、変更中、変更終了にもWindows特有のメッセージがあります。(SendMessageというのをMSDNで検索してください。)
SpyというソフトはVisualStudioに付属してあると思いますが、そのWindowsが送るメッセージをデバッグすることができます。
xiaolong_gooさんが、何が行われたら操作してないとするかがわかったら、もっと詳しく言えるのですが・・・・
そこら辺の仕様を教えてもらえませんか?
この回答への補足
毎度、毎度お世話になります。
基本的にはフォーム上のtextboxなどのコントロールに一定時間入力がなかったりした場合にロックをしたいのです。
ロックといっても、アプリケーションモーダルのメッセージボックスを出してパスワードの入力を求めるだけのものなのですが。
印刷やファイルの読み書きなど、仮に数時間の時間がかかったとしても、それは、アプリケーションがユーザーからの指示を受けて自動実行しているものですよね。私の考え方では、この場合「入力がないもの」と考えています。
こういった場合は、やはり各コントロール全てにフラグを立てて判断するのでしょうか。
No.2
- 回答日時:
たびたび田吾作7です。
うーんそうですねー。
出来たらフラグを立てたほうがいいと思いますよ。
フラグがなかったら、操作中にロックがかかるという事態が起こる可能性がありますね。
それとWINDOWの位置も監視したほうがいいと思います。プロセス監視をしないでも、もう一つタイマーを用意しておいて、ウィンドウのLEFTとTOPを監視したほうがいいかも知れません。そのタイマーイベントにはDOEVENTSをわすれないようにしてください。
>いろいろ試してみたのですが、うまくいかないので悩んでいます
でわでわ
この回答への補足
やはり、各コントロール全てにフラグを立てるしかないようですね。
しかし、フォーム上に50以上あるコントロール全てに設定するとなればかなり時間と労力の無駄になりそうで、こうなったら、タイマーコントロールだけで強制的にロックを掛けてしまおうか・・・なんて短絡的なことを考えてしまいます。
No.3ベストアンサー
- 回答日時:
考え方によっては、MouseOver、Keypressイベントも
取得したほうがいいですね。
話ははずれますが、Windowsのスクリーンセーバー自体が
もともと、操作しなければロックを掛けられる仕組みに
なってます。
この回答への補足
< 話ははずれますが、Windowsのスクリーンセーバー自体が
< もともと、操作しなければロックを掛けられる仕組みに
< なってます。
そうですね。 ということはAPIを駆使して判断しているのでしょうか。
簡単そうで難しいVBのプログラミングにはいつも泣かされます。
No.4
- 回答日時:
田吾作7です・・・
50以上ですか・・・?
うむそれは厳しい・・・コントロール配列になっているならば多少は楽なんでしょうけど。。。
そうなると、APIを駆使して作って、各コントロールのハンドルを取り出し、それぞれのプロセスを再起的に監視したほうがいいかも?コントロールを一つ追加するたびに、同じ関数を呼び出すプログラムは、スマートではないですね。
σ( ̄ー ̄ ボク ホントはタイマー嫌い
ちなみにスクリーンセーバーは基本的にWM_MOUSEMOVEに反応するようですね。
でわでわ
この回答への補足
たびたび・・・です。
VBって本当に簡単そうで難しいですね。
今まで(VB6)を購入するまでは、DOSベースで業務用アプリケーションを開発していましたので、CUIプログラムならこんなこと簡単にできるのに、このGUIベースのVBはどうしてもなじめなくて困りものです。いまだにDOSベースで活躍する業務用アプリケーションの需要はあるのですが一部にはVBで作ってソースを頂戴・・・ってのも多くなってきましたのでVBに乗り換えました。
DOSユーザー泣かせのVBですが、がんばっていきますのでよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル・VBA CheckBoxのオブ...
-
エクセルVBAでオプションボタン...
-
カメラスクロールするのを動画...
-
C#で角が丸いテキストボックス
-
変数をコントロール型で使用す...
-
ExcelVBAのコントロールの種類...
-
PDF起動時のナビゲーションパネ...
-
コントロールを移動できない
-
vb.netで画面のコントロールId...
-
ExcelVBAでListViewが使用できない
-
'ckbl' コントロールは作成され...
-
アクセス特有の書き方?
-
フォームがリサイズされた時の...
-
VBA ユーザーフォームの Keypre...
-
Groupboxの配下のコントロール...
-
Validated イベントについて
-
C# Form上に配置されたコントロ...
-
VB.NETでタイマー作成
-
VB6.0 プロジェクトオープン時...
-
エクセルVBAユーザーフォーム・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
エクセルVBAでオプションボタン...
-
vb.netで画面のコントロールId...
-
ExcelVBAでListViewが使用できない
-
EXCELでactivexコントロールを...
-
コントロールを移動できない
-
フォーム上の現在アクティブな...
-
ユーザーフォームで動的(Me.Con...
-
ListViewのチェックボックスに...
-
C#で角が丸いテキストボックス
-
エクセル コントロールツール...
-
VBAのフォームでTextBoxがいっ...
-
Excel VBA で Richtextboxを使...
-
VBA ユーザーフォームの Keypre...
-
Groupboxの配下のコントロール...
-
ACCESS2010のVBAでフォーム内ク...
-
chr関数の呼び出しで「プロ...
-
vba dbcommand button activex ...
-
With~EndWithの省略部分と引数...
おすすめ情報