Eightball3
Programmer
I am currently using the following code that will log the user out if a specified period of time elapses without changing the current form. The problem is that sometimes a user is using the same form for for longer than the set idle time and the application closes not saving the information entered by the user. I don't want to lengthen the idle time for just this one form. I would like to modify the code below so that it say checks the mouse location instead. Can anyone help me with this? Thanks.
' IDLEMINUTES determines how much idle time to wait before
' running the IdleTimeDetected subroutine.
IDLEMINUTES = Idle
Static PrevControlName As String
Static PrevFormName As String
Static ExpiredTime
Dim ActiveFormName As String
Dim ActiveControlName As String
Dim ExpiredMinutes
On Error Resume Next
If DLookup("[locked]", "lock", "[locked]" = True Then
If DLookup("[locked by]", "lock", "[locked by]=currentuser()" = CurrentUser() Then
Else
DoCmd.OpenForm "timer form"
Exit Sub
End If
Else
DoCmd.Close acForm, "timer form"
Shutdown = Null
End If
' 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
Application.Quit acQuitSaveNone
End If
End Sub
' IDLEMINUTES determines how much idle time to wait before
' running the IdleTimeDetected subroutine.
IDLEMINUTES = Idle
Static PrevControlName As String
Static PrevFormName As String
Static ExpiredTime
Dim ActiveFormName As String
Dim ActiveControlName As String
Dim ExpiredMinutes
On Error Resume Next
If DLookup("[locked]", "lock", "[locked]" = True Then
If DLookup("[locked by]", "lock", "[locked by]=currentuser()" = CurrentUser() Then
Else
DoCmd.OpenForm "timer form"
Exit Sub
End If
Else
DoCmd.Close acForm, "timer form"
Shutdown = Null
End If
' 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
Application.Quit acQuitSaveNone
End If
End Sub