ACC: 如何偵測使用者閒置時間或非使用狀態

文章翻譯 文章翻譯
文章編號: 128814 - 檢視此文章適用的產品。
中級使用者: 需要基本巨集]、 [程式碼撰寫,] 以及 [交互操作性技巧。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您,如何建立程序,如果您的 Microsoft Access 應用程式不會偵測任何使用者輸入指定的一段時間將會執行。

本文假設您已熟悉使用 Visual Basic 應用程式以及建立 Microsoft Access 應用程式使用程式設計與 Microsoft Access 所提供的工具。如需有關 Visual Basic 應用程式,請參閱 < 建置應用程式"手冊。

注意: 應用程式 (用在 Microsoft Access 7.0 與 Microsoft Access 97) 的 Visual Basic 稱為存取基本 2.0 版中。

注意: 這篇文章說明中範例檔案 FrmSampl.exe (對於 Microsoft Access 在 Windows 95 7.0 版的) 和 FrmSmp97.exe (如 Microsoft Access 97) 示範一種技術。如需有關如何取得這些範例檔案,請參閱下列文件 「 Microsoft 知識庫 」 中的資訊:
150895ACC95: Microsoft Access 範例表單可用在下載中心
175066ACC97: Microsoft Access 97 範例表單可用在下載中心

其他相關資訊

如何建立 DetectIdleTime 表單

  1. 建立不以任何資料表或查詢為基準的空白表單,並命名 DetectIdleTime。
  2. 設定下列表單屬性:
    OnTimer: [事件程序]
    TimerInterval: 1000年
    注意: 設定值是表示頻率 (以毫秒為單位) 的 TimerInterval 應用程式檢查使用者閒置時間。如果設定為 1000年等於 1 秒。
  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
    						
  4. 在表單模組中建立下列的程序:
           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 表單

若要隱藏 DetectIdleTime 表單應用程式開啟時,建立下列的自動執行巨集:
   Macro Name   Action
   ---------------------
   AutoExec     OpenForm

   AutoExec Actions
   ----------------------------
   OpenForm:
      Form Name: DetectIdleTime
      View: Form
      Filter Name:
      Where Condition:
      Data Mode: Edit
      Window Mode: Hidden
				
您可以將程式碼加入至 IdleTimeDetected 程序中,所以如果沒有任何使用者活動 IDLEMINUTES 常值中所指定的時間的長度,程序執行。例如,您可以有下列的事件程序而結束的 Microsoft Access:

在 Microsoft Access 7.0 和 97:
   Sub IdleTimeDetected (ExpiredMinutes)
      Application.Quit acSaveYes
   End Sub
				
在 Microsoft Access 2.0:
   Sub IdleTimeDetected (ExpiredMinutes)
      Application.Quit A_SAVE
   End Sub
				
此程序會導致 Microsoft Access 在結束應用程式不須顯示對話方塊,儲存所有的物件。

?考

如需計時器事件的相關的詳細資訊,搜尋 計時器事件 的 [說明] 索引]。

屬性

文章編號: 128814 - 上次校閱: 2007年1月19日 - 版次: 2.3
這篇文章中的資訊適用於:
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
關鍵字:?
kbmt kbhowto kbprogramming kbusage KB128814 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:128814
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com