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
| ' Pour tester, mettre un contrôle Label1 sur Form1
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private bFIN As Boolean
Private Sub Form_Load()
Dim lLastAction As Long 'Valeur du Timer pour la dernière action clavier ou souris
Dim lSecondsIdle As Long 'Nombre de secondes depuis la dernière action
Dim iCt As Integer
bFIN = False ' initialisation du flag qui arrêtera "Loop"
Me.Show ' s'assurer que Form1 est affichée
Do Until bFIN = True
For iCt = 0 To 255 'parcourt toutes les touches
If GetAsyncKeyState(iCt) <> 0 Then ' si une touche est enfoncée, remet à zéro le compteur
lLastAction = Timer
End If
DoEvents ' rend la main au système et/ou à l'utilisateur
Next iCt
lSecondsIdle = Timer - lLastAction ' Retourne le temps d'inactivité (souris et clavier)
ConvTime lSecondsIdle
Loop
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Arrête Loop
bFIN = True
' S'assure que l'application prend fin
End
End Sub
Sub ConvTime(TM As Long)
Dim H&, M&, S&
H = TM \ 3600
M = (TM - H * 3600) \ 60
S = TM - H * 3600 - M * 60
'Affiche la durée d'inactivité dans un Label
Label1 = Right("00" & CStr(H), 2) + ":" + Right("00" & CStr(M), 2) + ":" + Right("00" & CStr(S), 2)
End Sub |
Partager