プロが教える店舗&オフィスのセキュリティ対策術

現在、開発している中で一定期間キーボード入力あるいはマウスによる操作がなければあるフォームを表示したいと考えています。
Timerを使えばできると思うのですが、もっと手軽にできる方法を探しています。
もしご経験がある方がおりましたらご教授ください。
宜しくお願いします。

開発環境
開発環境:VB6.0+SP5
OS:Windows2000+SP2

A 回答 (3件)

そのフォームのEXEをスクリーンセーバーに登録するのはどうでしょうか。

    • good
    • 0

おっしゃっている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
    • good
    • 0

全く同じ目的のことを最近アプリに付け加えたので、その方法ですが。


タイマーコントロールで時間を監視し、キーボードは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

この回答への補足

ありがとうございます。参考にさせてもらいます。

補足日時:2002/05/21 02:01
    • good
    • 0

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