- 締切済み
アプリケーションのロックについて
現在開発中のアプリケーションで、一定時間操作しないとロックが掛かるようにしたいのですが、タイマーコントロールだけで実現できるのでしょうか。 いろいろ試してみたのですが、うまくいかないので悩んでいます。 「ユーザーがアプリケーションにまったく触っていない」というのを取得できるようなものはあるのでしょうか。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- TAGOSAKU7
- ベストアンサー率65% (276/422)
田吾作7です・・・ 50以上ですか・・・? うむそれは厳しい・・・コントロール配列になっているならば多少は楽なんでしょうけど。。。 そうなると、APIを駆使して作って、各コントロールのハンドルを取り出し、それぞれのプロセスを再起的に監視したほうがいいかも?コントロールを一つ追加するたびに、同じ関数を呼び出すプログラムは、スマートではないですね。 σ( ̄ー ̄ ボク ホントはタイマー嫌い ちなみにスクリーンセーバーは基本的にWM_MOUSEMOVEに反応するようですね。 でわでわ
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
考え方によっては、MouseOver、Keypressイベントも 取得したほうがいいですね。 話ははずれますが、Windowsのスクリーンセーバー自体が もともと、操作しなければロックを掛けられる仕組みに なってます。
補足
< 話ははずれますが、Windowsのスクリーンセーバー自体が < もともと、操作しなければロックを掛けられる仕組みに < なってます。 そうですね。 ということはAPIを駆使して判断しているのでしょうか。 簡単そうで難しいVBのプログラミングにはいつも泣かされます。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
たびたび田吾作7です。 うーんそうですねー。 出来たらフラグを立てたほうがいいと思いますよ。 フラグがなかったら、操作中にロックがかかるという事態が起こる可能性がありますね。 それとWINDOWの位置も監視したほうがいいと思います。プロセス監視をしないでも、もう一つタイマーを用意しておいて、ウィンドウのLEFTとTOPを監視したほうがいいかも知れません。そのタイマーイベントにはDOEVENTSをわすれないようにしてください。 >いろいろ試してみたのですが、うまくいかないので悩んでいます でわでわ
補足
やはり、各コントロール全てにフラグを立てるしかないようですね。 しかし、フォーム上に50以上あるコントロール全てに設定するとなればかなり時間と労力の無駄になりそうで、こうなったら、タイマーコントロールだけで強制的にロックを掛けてしまおうか・・・なんて短絡的なことを考えてしまいます。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
どもども田吾作7です。 処理ロジックとしては、、、 フォームのResizeやフォームと各コントロールのMOSEDOWN、KEYDOWNなどのイベントにそれぞれフラグを立てる必要があります。 もしフォームの移動もイベントの認識をしたいのであれば、プロセス監視が必要になります。 Spyって使ったことありますか? VBアプリケーションだけでなく、Windowsの各ウィンドウやアプリケーション、またはアプリケーションの中の各コントロールは、Windowsからのメッセージを受けて、そのメッセージの種類により、動作します。もちろんフォームの位置の移動にも、フォームのサイズの変更開始、変更中、変更終了にもWindows特有のメッセージがあります。(SendMessageというのをMSDNで検索してください。) SpyというソフトはVisualStudioに付属してあると思いますが、そのWindowsが送るメッセージをデバッグすることができます。 xiaolong_gooさんが、何が行われたら操作してないとするかがわかったら、もっと詳しく言えるのですが・・・・ そこら辺の仕様を教えてもらえませんか?
補足
毎度、毎度お世話になります。 基本的にはフォーム上のtextboxなどのコントロールに一定時間入力がなかったりした場合にロックをしたいのです。 ロックといっても、アプリケーションモーダルのメッセージボックスを出してパスワードの入力を求めるだけのものなのですが。 印刷やファイルの読み書きなど、仮に数時間の時間がかかったとしても、それは、アプリケーションがユーザーからの指示を受けて自動実行しているものですよね。私の考え方では、この場合「入力がないもの」と考えています。 こういった場合は、やはり各コントロール全てにフラグを立てて判断するのでしょうか。
補足
たびたび・・・です。 VBって本当に簡単そうで難しいですね。 今まで(VB6)を購入するまでは、DOSベースで業務用アプリケーションを開発していましたので、CUIプログラムならこんなこと簡単にできるのに、このGUIベースのVBはどうしてもなじめなくて困りものです。いまだにDOSベースで活躍する業務用アプリケーションの需要はあるのですが一部にはVBで作ってソースを頂戴・・・ってのも多くなってきましたのでVBに乗り換えました。 DOSユーザー泣かせのVBですが、がんばっていきますのでよろしくお願いします。