- ベストアンサー
一定時間操作されないと自動で終了させる方法
プログラムが一定時間操作されない状態(マウス操作やキー操作)が続くと 自動的にプログラムを終了させたいのですが どうすれば実現できるのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
タイマーコントロールを使用してみてはいかがでしょうか。 例えば、1分おきにタイマーイベントを発生させて内部でカウントをとる。 そのカウンターが一定以上になるとプログラム終了。 キー操作など他のイベントが発生したときは、そのカウンターをリセットする。 これでできると思いますが、いかがでしょう。
その他の回答 (5)
- November11
- ベストアンサー率69% (23/33)
tinu2000さんの手法を使うのなら、 むしろTimer関数を使ったほうがいいかと思います。 ただ、日をまたがった場合の処理はそれほど難しいとは思いませんが、 No.1での回答ならば 日をまたがることを考慮しなくても良い上に タイマーインターバルの制限もないので 私はNo.1の手法で十分なのではないかと思います。
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
この質問にまだ回答を締め切っていないけど 具体的なソースを待っているのかな? 単純なソースを作りました。 フォーム上にコマンドボタン、テキストボックス、 タイマーを貼り付けて以下のソースでテストして下さい。 日付が変わったら、フォーカスがタブキーで移ったら、などの細かい条件は入っていません。 後はこれの応用です。 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
- AREC
- ベストアンサー率32% (23/70)
グローバル変数に監視開始時刻を設定し、タイマコントロールで一定時間ごとに監視開始時時刻からの経過時間をチェックする様にしては如何でしょうか? 監視開始時刻をキー操作やマウス操作がされる度に設定しなおしてやればタイマーインターバルの制限を気にする必要は無いと思います。時刻はマシン時間で十分です。 申し訳ありませんが、今、手元にVBが使用出来るPCが無いのでコードはご自分で考えてみてください。
- November11
- ベストアンサー率69% (23/33)
Intervalプロパティの最大値は65,535なので you-mさんのやりかたでは1分そこそこの未操作で終了してしまうと思うのですが… けどまあ、mk_jmcさんの要望が1分で十分ならそれでもいいですね(^^) Timer1.Enabled = False Timer1.Enabled = True でリセットされるのは知りませんでした。参考になります。
- you-m
- ベストアンサー率58% (190/327)
タイマーイベント内に、自身を終了するコードを書きます。Intervalプロパティには、「一定時間」に相当する時間をミリ秒単位で設定します。 そして、ボタンのクリックイベントなど操作と認めるイベント内で、タイマーリセット用のプロシージャを呼びます。 Sub TimerReset() Timer1.Enable = False Timer1.Enable = True End Sub こんな感じでどうでしょうかね?