Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Need a way to monitor idle time in an access program 1

Status
Not open for further replies.

johnfox

Programmer
Oct 25, 2001
4
0
0
US
I need to gracefully exit a user if they have been Idle for 30 minutes or more. I do not know the best way to detect this event. I considered using the windows API but would like to keep it focused within the access program (Access 97 not 2000).

Any advice?
 
This is the code I found in the ACCESS ONLINE ENCYCLOPEDIA at (article M29):


Sub Form_Timer()
' IDLEMINUTES determines how much idle time to wait 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.
Call fExitApplication
End If
End Sub
 
Francesina,
Your post was right on the mark! It is exactly what I needed to get my project on track. I will be scanning the posts to see if you need any help.

Thanks

John Fox
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top