Ce code permet de tester toutes les secondes si le focus ne se déplace dans le formulaire
ou si une touche n'est pas appuyée pendant un temps paramétré, un message de non activité s'affiche.
Ce code permet de fermer un Formulaire ou la base en cours au bout d'un temps prédéfini.
Voici le code du Module du Formulaire testé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| Sub Form_Timer()
' IDLEMINUTES determines how much idle time to wait for before
' running the IdleTimeDetected subroutine.
Const IDLEMINUTES = 0.05
Static PrevControlName As String
Static PrevFormName As String
Dim ActiveFormName As String
Dim ActiveControlName As String
Dim ExpiredMinutes
On Error Resume Next
' check le forumulaire active et le 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
' verifie actif actuel and reinitialise temps expiration si:
' 1. aucun enregistrement d'action encore (code roule pour
' la premiere fois).
' 2. les noms precedents sont differents des noms courants
' (usager a fait quelque chose de different pendant l'intervalle de temps
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
' ...si oui, je reset le temps d'expiration a 0...
ExpiredTime = 0
' ...et appelle la sous-routine idletimedetected.
IdleTimeDetected ExpiredMinutes
End If
End Sub
Sub IdleTimeDetected(ExpiredMinutes)
Dim Msg As String
Msg = "Aucune activite "
Msg = Msg & ExpiredMinutes & " minute(s)!"
MsgBox Msg, 48
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Not IsNull(KeyCode) Then
ExpiredTime = 0
End If
End Sub |
Const IDLEMINUTES = 0.05 correspond à 5 secondes
Modifiez les propriétés du Formulaire comme suit :
Aperçu des touches sur OUI
Intervalle minuterie = 1000
Partager