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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

考え方によっては、MouseOver、Keypressイベントも


取得したほうがいいですね。

話ははずれますが、Windowsのスクリーンセーバー自体が
もともと、操作しなければロックを掛けられる仕組みに
なってます。

この回答への補足

< 話ははずれますが、Windowsのスクリーンセーバー自体が
< もともと、操作しなければロックを掛けられる仕組みに
< なってます。

そうですね。 ということはAPIを駆使して判断しているのでしょうか。
簡単そうで難しいVBのプログラミングにはいつも泣かされます。

補足日時:2001/07/15 22:27
    • good
    • 0

田吾作7です・・・



50以上ですか・・・?
うむそれは厳しい・・・コントロール配列になっているならば多少は楽なんでしょうけど。。。

そうなると、APIを駆使して作って、各コントロールのハンドルを取り出し、それぞれのプロセスを再起的に監視したほうがいいかも?コントロールを一つ追加するたびに、同じ関数を呼び出すプログラムは、スマートではないですね。

σ( ̄ー ̄ ボク ホントはタイマー嫌い


ちなみにスクリーンセーバーは基本的にWM_MOUSEMOVEに反応するようですね。

でわでわ

この回答への補足

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

補足日時:2001/07/15 23:56
    • good
    • 0

たびたび田吾作7です。



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

>いろいろ試してみたのですが、うまくいかないので悩んでいます

でわでわ

この回答への補足

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

補足日時:2001/07/15 22:23
    • good
    • 0

どもども田吾作7です。



処理ロジックとしては、、、

フォームのResizeやフォームと各コントロールのMOSEDOWN、KEYDOWNなどのイベントにそれぞれフラグを立てる必要があります。

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

xiaolong_gooさんが、何が行われたら操作してないとするかがわかったら、もっと詳しく言えるのですが・・・・
そこら辺の仕様を教えてもらえませんか?

この回答への補足

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

補足日時:2001/07/15 14:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング