共用方式為


偵測使用者閒置時間或非使用狀態

本主題說明如何建立一個程式,以在您的 Access 應用程式在一段指定的時間內未偵測到任何使用者輸入時執行。 它牽涉到建立隱藏的表單 DetectIdleTime,以追蹤閒置時間。

請依照下列步驟建立 DetectIdleTime 表單。

  1. 建立一個沒有任何基準資料表或查詢的空白表單,將其命名為 DetectIdleTime

  2. 設定下列表單屬性:

    注意事項

    [!注意事項] TimerInterval 設定指示應用程式檢查使用者無活動的頻率 (以毫秒計)。 設定 1000 等於 1 秒。

    屬性
    OnTimer [Event Procedure]
    TimerInterval 1000
  3. OnTimer 屬性事件程序輸入下列程式碼:

     Sub Form_Timer() 
             ' IDLEMINUTES determines how much idle time to wait for before 
             ' running the IdleTimeDetected subroutine. 
             Const IDLEMINUTES = 5 
    
             Static PrevControlName As String 
             Static PrevFormName As String 
             Static ExpiredTime 
    
             Dim ActiveFormName As String 
             Dim ActiveControlName As String 
             Dim ExpiredMinutes 
    
             On Error Resume Next 
    
             ' Get the active form and control name. 
    
             ActiveFormName = Screen.ActiveForm.Name 
             If Err Then 
                 ActiveFormName = "No Active Form" 
                 Err = 0 
             End If 
    
             ActiveControlName = Screen.ActiveControl.Name 
                 If Err Then 
                 ActiveControlName = "No Active Control" 
                 Err = 0 
             End If 
    
             ' Record the current active names and reset ExpiredTime if: 
             '    1. They have not been recorded yet (code is running 
             '       for the first time). 
             '    2. The previous names are different than the current ones 
             '       (the user has done something different during the timer 
             '        interval). 
             If (PrevControlName = "") Or (PrevFormName = "") _ 
               Or (ActiveFormName <> PrevFormName) _ 
               Or (ActiveControlName <> PrevControlName) Then 
                 PrevControlName = ActiveControlName 
                 PrevFormName = ActiveFormName 
                 ExpiredTime = 0 
             Else 
                 ' ...otherwise the user was idle during the time interval, so 
                 ' increment the total expired time. 
                 ExpiredTime = ExpiredTime + Me.TimerInterval 
             End If 
    
             ' Does the total expired time exceed the IDLEMINUTES? 
             ExpiredMinutes = (ExpiredTime / 1000) / 60 
             If ExpiredMinutes >= IDLEMINUTES Then 
                 ' ...if so, then reset the expired time to zero... 
                 ExpiredTime = 0 
                 ' ...and call the IdleTimeDetected subroutine. 
                 IdleTimeDetected ExpiredMinutes 
             End If 
           End Sub
    

然後,在表單模組中建立下列程式:

 Sub IdleTimeDetected(ExpiredMinutes) 
         Dim Msg As String 
         Msg = "No user activity detected in the last " 
         Msg = Msg & ExpiredMinutes & " minute(s)!" 
         MsgBox Msg, 48 
       End Sub

若要在表單開啟時隱藏DetectIdleTime表單,請將OpenForm方法的WindowMode引數設定為acHidden

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應