• 締切済み

アプリケーションのロックについて

現在開発中のアプリケーションで、一定時間操作しないとロックが掛かるようにしたいのですが、タイマーコントロールだけで実現できるのでしょうか。 いろいろ試してみたのですが、うまくいかないので悩んでいます。 「ユーザーがアプリケーションにまったく触っていない」というのを取得できるようなものはあるのでしょうか。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

田吾作7です・・・ 50以上ですか・・・? うむそれは厳しい・・・コントロール配列になっているならば多少は楽なんでしょうけど。。。 そうなると、APIを駆使して作って、各コントロールのハンドルを取り出し、それぞれのプロセスを再起的に監視したほうがいいかも?コントロールを一つ追加するたびに、同じ関数を呼び出すプログラムは、スマートではないですね。 σ( ̄ー ̄ ボク ホントはタイマー嫌い ちなみにスクリーンセーバーは基本的にWM_MOUSEMOVEに反応するようですね。 でわでわ

xiaolong_goo
質問者

補足

たびたび・・・です。 VBって本当に簡単そうで難しいですね。 今まで(VB6)を購入するまでは、DOSベースで業務用アプリケーションを開発していましたので、CUIプログラムならこんなこと簡単にできるのに、このGUIベースのVBはどうしてもなじめなくて困りものです。いまだにDOSベースで活躍する業務用アプリケーションの需要はあるのですが一部にはVBで作ってソースを頂戴・・・ってのも多くなってきましたのでVBに乗り換えました。 DOSユーザー泣かせのVBですが、がんばっていきますのでよろしくお願いします。

回答No.3

考え方によっては、MouseOver、Keypressイベントも 取得したほうがいいですね。 話ははずれますが、Windowsのスクリーンセーバー自体が もともと、操作しなければロックを掛けられる仕組みに なってます。

xiaolong_goo
質問者

補足

< 話ははずれますが、Windowsのスクリーンセーバー自体が < もともと、操作しなければロックを掛けられる仕組みに < なってます。 そうですね。 ということはAPIを駆使して判断しているのでしょうか。 簡単そうで難しいVBのプログラミングにはいつも泣かされます。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

たびたび田吾作7です。 うーんそうですねー。 出来たらフラグを立てたほうがいいと思いますよ。 フラグがなかったら、操作中にロックがかかるという事態が起こる可能性がありますね。 それとWINDOWの位置も監視したほうがいいと思います。プロセス監視をしないでも、もう一つタイマーを用意しておいて、ウィンドウのLEFTとTOPを監視したほうがいいかも知れません。そのタイマーイベントにはDOEVENTSをわすれないようにしてください。 >いろいろ試してみたのですが、うまくいかないので悩んでいます でわでわ

xiaolong_goo
質問者

補足

やはり、各コントロール全てにフラグを立てるしかないようですね。 しかし、フォーム上に50以上あるコントロール全てに設定するとなればかなり時間と労力の無駄になりそうで、こうなったら、タイマーコントロールだけで強制的にロックを掛けてしまおうか・・・なんて短絡的なことを考えてしまいます。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

どもども田吾作7です。 処理ロジックとしては、、、 フォームのResizeやフォームと各コントロールのMOSEDOWN、KEYDOWNなどのイベントにそれぞれフラグを立てる必要があります。 もしフォームの移動もイベントの認識をしたいのであれば、プロセス監視が必要になります。 Spyって使ったことありますか? VBアプリケーションだけでなく、Windowsの各ウィンドウやアプリケーション、またはアプリケーションの中の各コントロールは、Windowsからのメッセージを受けて、そのメッセージの種類により、動作します。もちろんフォームの位置の移動にも、フォームのサイズの変更開始、変更中、変更終了にもWindows特有のメッセージがあります。(SendMessageというのをMSDNで検索してください。) SpyというソフトはVisualStudioに付属してあると思いますが、そのWindowsが送るメッセージをデバッグすることができます。 xiaolong_gooさんが、何が行われたら操作してないとするかがわかったら、もっと詳しく言えるのですが・・・・ そこら辺の仕様を教えてもらえませんか?

xiaolong_goo
質問者

補足

毎度、毎度お世話になります。 基本的にはフォーム上のtextboxなどのコントロールに一定時間入力がなかったりした場合にロックをしたいのです。 ロックといっても、アプリケーションモーダルのメッセージボックスを出してパスワードの入力を求めるだけのものなのですが。 印刷やファイルの読み書きなど、仮に数時間の時間がかかったとしても、それは、アプリケーションがユーザーからの指示を受けて自動実行しているものですよね。私の考え方では、この場合「入力がないもの」と考えています。 こういった場合は、やはり各コントロール全てにフラグを立てて判断するのでしょうか。

関連するQ&A