Probléme code "Temps d'inactivité"
Bonjour à vous tous et merci d'avance pour votre aide.
Voici un code que j'ai repris d'un tutorial, qui test le temps d'inactivité de l'utilisateur. J'ai adpaté le code, pour affiché un msgbox aprés 5 secondes d'inactivité.
Le msgbox s'affiche normalement aprés 5 secondes d'inactivité, mais pour une raison qui m'échappe. Le msgbox s'affiche à plusieurs reprise en un instant. Comment faire pour qu'il s'affiche juste une fois.
Timer "CCTimerMain"
Code:
1 2 3 4 5 6 7 8
|
Private Sub CCTimerMain_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CCTimerMain.Tick
If IsInputIdle(Val(5)) Then
MsgBox("Inactif")
End If
End Sub |
MODULE
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
Option Strict Off
Option Explicit On
Module ModMain
'UPGRADE_WARNING: La structure LASTINPUTINFO peut nécessiter que des attributs de marshaling soient passés en tant qu'argument dans cette instruction Declare. Cliquez ici*: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"'
Private Declare Function GetLastInputInfo Lib "user32.dll" (ByRef plii As LASTINPUTINFO) As Integer
Private Declare Function GetTickCount Lib "kernel32.dll" () As Integer
Private Structure LASTINPUTINFO
Dim cbSize As Integer
Dim dwTime As Integer
End Structure
'# Permet de savoir si l'utilisateur est considéré comme absent. L'intervalle est en secondes
Public Function IsInputIdle(ByVal vIdleTimeout As Integer) As Boolean
Dim LII As LASTINPUTINFO
LII.cbSize = Len(LII)
If GetLastInputInfo(LII) <> 0 Then
IsInputIdle = (GetTickCount - LII.dwTime) > (1000 * vIdleTimeout)
End If
End Function
End Module |
Merci.