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"
MODULE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager