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

プログラムが一定時間操作されない状態(マウス操作やキー操作)が続くと
自動的にプログラムを終了させたいのですが
どうすれば実現できるのでしょうか?

A 回答 (6件)

タイマーコントロールを使用してみてはいかがでしょうか。


例えば、1分おきにタイマーイベントを発生させて内部でカウントをとる。
そのカウンターが一定以上になるとプログラム終了。
キー操作など他のイベントが発生したときは、そのカウンターをリセットする。
これでできると思いますが、いかがでしょう。
    • good
    • 2

tinu2000さんの手法を使うのなら、


むしろTimer関数を使ったほうがいいかと思います。
ただ、日をまたがった場合の処理はそれほど難しいとは思いませんが、
No.1での回答ならば
日をまたがることを考慮しなくても良い上に
タイマーインターバルの制限もないので
私はNo.1の手法で十分なのではないかと思います。
    • good
    • 0

この質問にまだ回答を締め切っていないけど


具体的なソースを待っているのかな?
単純なソースを作りました。
フォーム上にコマンドボタン、テキストボックス、
タイマーを貼り付けて以下のソースでテストして下さい。
日付が変わったら、フォーカスがタブキーで移ったら、などの細かい条件は入っていません。
後はこれの応用です。


Option Explicit
Dim hh As Long
Dim mm As Long
Dim dd As Long
Dim sttime As Long
Dim edtime As Long

Private Sub Form_Load()
  hh = Hour(Time)
  mm = Minute(Time)
  dd = Second(Time)
  sttime = hh * 3600 + mm * 60 + dd
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  hh = Hour(Time)
  mm = Minute(Time)
  dd = Second(Time)
  sttime = hh * 3600 + mm * 60 + dd
End Sub

Private Sub Text1_Change()
  hh = Hour(Time)
  mm = Minute(Time)
  dd = Second(Time)
  sttime = hh * 3600 + mm * 60 + dd
End Sub

Private Sub Timer1_Timer()
  hh = Hour(Time)
  mm = Minute(Time)
  dd = Second(Time)
  edtime = hh * 3600 + mm * 60 + dd

  If edtime - sttime > 10 Then '--- 10 秒後に終了
   Unload Me
   End
  End If

End Sub
    • good
    • 0

グローバル変数に監視開始時刻を設定し、タイマコントロールで一定時間ごとに監視開始時時刻からの経過時間をチェックする様にしては如何でしょうか?


監視開始時刻をキー操作やマウス操作がされる度に設定しなおしてやればタイマーインターバルの制限を気にする必要は無いと思います。時刻はマシン時間で十分です。
申し訳ありませんが、今、手元にVBが使用出来るPCが無いのでコードはご自分で考えてみてください。
    • good
    • 0

Intervalプロパティの最大値は65,535なので


you-mさんのやりかたでは1分そこそこの未操作で終了してしまうと思うのですが…

けどまあ、mk_jmcさんの要望が1分で十分ならそれでもいいですね(^^)
Timer1.Enabled = False
Timer1.Enabled = True
でリセットされるのは知りませんでした。参考になります。
    • good
    • 0

タイマーイベント内に、自身を終了するコードを書きます。

Intervalプロパティには、「一定時間」に相当する時間をミリ秒単位で設定します。
そして、ボタンのクリックイベントなど操作と認めるイベント内で、タイマーリセット用のプロシージャを呼びます。

Sub TimerReset()
Timer1.Enable = False
Timer1.Enable = True
End Sub

こんな感じでどうでしょうかね?
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています