- ベストアンサー
キーボード入力、マウス操作を監視をしたい
現在、開発している中で一定期間キーボード入力あるいはマウスによる操作がなければあるフォームを表示したいと考えています。 Timerを使えばできると思うのですが、もっと手軽にできる方法を探しています。 もしご経験がある方がおりましたらご教授ください。 宜しくお願いします。 開発環境 開発環境:VB6.0+SP5 OS:Windows2000+SP2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
全く同じ目的のことを最近アプリに付け加えたので、その方法ですが。 タイマーコントロールで時間を監視し、キーボードはKey_Downかkey_pressで、マウスはmousu_moveでチェックします。 プログラムの一部を記します。F_lastcheck は20分間キーボードもマウスも操作しなかったときに表示するフォームです。 あと終了時にTimer.Enabled を False にします。 ------------------------------------------------------------ Private p_timeover As Long '無操作処理秒数 private p_NoAccessMSeconds '監視時間(msec) Private Sub Form_Load() p_timeover = 0 Timer.Enabled = True p_NoAccessMSeconds = 1200000 '20分間 ---ほかの処理を記述 End Sub '----------------------------------------------- 'マウスを動かしたときの処理 Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) p_timeover = 0 End Sub '------------------------------------------------ 'テキストボックスでキーを動かした時の処理 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) p_timeover = 0 ---ほかの処理を記述 End Sub '------------------------------------------------ '無処理時間の監視 5秒おきにチェック Private Sub Timer_Timer() p_timeover = p_timeover + 5000 If p_timeover > p_NoAccessMSeconds Then p_timeover = 0 F_lastcheck.Show 1 End If End Sub
その他の回答 (2)
- sha-girl
- ベストアンサー率52% (430/816)
おっしゃっているTimerが TimerコントロールかTimer関数かわかりませんが とりあえず 時間を算出する方法として APIではWindowsが起動してから 何秒経過したかを返すGetTickCount()関数、 標準関数では午前0時から何秒たったかを返すTimer()関数 がありますが、 特に精度が必要なければタイマーコントロールを使うのが一般的でしょう。 参考までにタイマーコントロール(Timer1_Timer) を使って600秒ごとにメッセージボックスを表示するものを書いてみました。 'timer1.interval=1000(1秒)に設定 Dim cnt As Long Private Sub Timer1_Timer() cnt = cnt + 1 Text1.Text = cnt If cnt >= 600 Then MsgBox ("600秒経過") cnt = 0 End If End Sub
- TMINET
- ベストアンサー率32% (45/140)
そのフォームのEXEをスクリーンセーバーに登録するのはどうでしょうか。
補足
ありがとうございます。参考にさせてもらいます。