[AccessD] Lock-screen inside an Access app

Heenan, Lambert Lambert.Heenan at AIG.com
Thu May 3 08:26:27 CDT 2007


This is quite simple to do and was laid out in some Kb article or other that
I read years ago. 

Because most Access applications are interactive, you don't need to worry
about tracking keystrokes or mouse movements. Instead you just need to watch
what forms, and controls within those forms are currently active, and this
is made very easy by using the Screen object. You can use its ActiveForm and
ActiveControl properties to keep tabs on where the user is. This is all done
inside a form that you open as hidden, and it has a timer event that checks
the user activity.

In my apps I simply kick inactive users out, but you could just as easily
pop up a modal form that demands a password. 

Below is the essential code you need in the forms timer event. No need at
all for class wrappers and sinking mouse events.

HTH


Lambert

Private Sub Form_Timer()

Const IDLEMINUTES = 30

Static PrevControlName As String
Static PrevFormName As String
Static ExpiredTime As Long
Dim ActiveFormName As String
Dim ActiveControlName As String
Dim ExpiredMinutes As Long

    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 HERE DO WHATEVER YOU NEED TO DO WHEN A USER HAS 
		' NOT DONE ANYTHING FOR THE DEFINED IDLEMINUTE PERIOD
    End If
End Sub


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Arthur Fuller
Sent: Thursday, May 03, 2007 7:53 AM
To: Access Developers discussion and problem solving
Subject: [AccessD] Lock-screen inside an Access app


A friend asked me how he could put a Windows-like screen lock (that asks for
a password) inside an Access app. He's thinking that it's a hidden form that
then appears after x minutes of inactivity and wants a password before
letting the user back into the app. Presumably it would shut the app down
with no valid password.

Does anyone have an idea how to do this?

TIA,
Arthur
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



More information about the AccessD mailing list