アプリを起動後、アイドルタイムが一定時間を経過したとき強制終了させるには、MyLib.mdaに登録されているDetectIdleTime_FS()関数を使用すると便利です。この関数には、引数としてフォームとアイドルタイム(分単位)を指定します。
- Access 97を起動して新規データベースを作成します。
- データベースウインドウが表示されたら、モジュールのタブをクリックして新規作成ボタンをクリックします。
- メニューのツールから参照設定をクリックして、データベースライブラリー(MyLib.mda)を登録します。
- データベースウインドウからフォームのタブをクリックして、新規作成ボタンをクリックします。
- フォームが表示されたら、フォームのイベントプロパティを表示させてTimer
Intervalに1000(1秒)を設定します。
 |
| 図1-フォームのイベントプロパティの設定内容 |
On Timerイベントには、以下のVBAコードを追加します。この例では、アイドルタイムが1分経過したとき、アプリを強制終了させています。本番で運用するときは、アイドルタイムとして15分から30分の範囲を指定するのが適当と思われます。また、Debug_ModeはFalseに設定してメッセージが表示されないようにします。
| リスト1-フォームのOn
Timerのイベント処理 |
#Const Debug_Mode = True
Private Sub Form_Timer()
Const conIdleMinutes = 1 ' 1分
If DetectIdleTime_FS(Me, conIdleMinutes) = True Then
#If Debug_Mode Then
MsgBox "No user activity detected in the last " _
& conIdleMinutes & " minute(s)!", _
vbInformation + vbOKOnly, _
"Idle Time Detected"
#End If
Application.Quit acQuitSaveAll
End If
End Sub
|
- フォームをfrmDetectIdleTimeの名称で保存します。
- ビューモードに切り替えたら、アプリをアイドル状態にします。1分経過すると、『No
user activity detected in the last 1 minute(s)!』のメッセージが表示されますのでOKボタンをクリックしてアプリを終了させます。
- 通常このフォーム(frmDetectIdleTime)は、メインメニューのOn
Openイベントから非表示モードで開きます。
| リスト2-メインメニューから非表示モードでfrmDetectIdleTimeを開く |
Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm "frmDetectIdleTime", acNormal, , , , acHidden
End Sub
|
|
Tip:
例えば、毎日夜11時に夜間バッチを実行するためアプリを10時30分に強制終了させるには、フォームの On
Timerイベントを以下のように書き換えます。緊急メンテなどで、任意の時間にアプリを強制終了させるには、終了時間をテーブルに格納しておくと便利です。この場合、強制終了10分前にユーザーに警告メッセージを表示するようにしておくとユーザーフレンドリーなアプリになります。