alexandreillusion
Messages postés37Date d'inscriptionlundi 7 juillet 2008StatutMembreDernière intervention14 mars 2011
-
26 mars 2009 à 22:40
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
28 mars 2009 à 20:10
bonjours à tous et à toutes,
Ne sachant pas dans quelle rubrique classer se message je l'ai donc mis ici (ne sachant pas avec quel outil solutionner mon problème)
j'ai donc fait un programme dans lequel on doit être logger pour s'en servir. je souhaite pouvoir déconnecter un utilisateur s'il n'y a aucune action de faite sur le programme au bout de par exemple 10 minutes.
Est-il possible de réaliser cela? et si oui comment ?
alexandreillusion
Messages postés37Date d'inscriptionlundi 7 juillet 2008StatutMembreDernière intervention14 mars 2011 28 mars 2009 à 00:15
J'ai cherché sur le net et j'ai traduit de vb6 a vb.net mais je ne réussi pas à saisir clairement son fonctionnement et a partir d'où je peux appeler la fonction pour qu'elle me permette au bout du vIdleTimeout de dix minutes de déconecté l'utilisateur.
alexandreillusion
Messages postés37Date d'inscriptionlundi 7 juillet 2008StatutMembreDernière intervention14 mars 2011 28 mars 2009 à 16:30
c'est de nouveau avec un nouveau problème!
J'ai donc créé un timer comme vous me l'avais dis seulement les deux variable LII.dwTime et LII.cbSize reste toujours respectivement bloquées à 0 et 16.
j'ai essayer de changer le type dans les déclarations des API et de ces variables mais rien y fait...
Maintenant que je commence à mieux comprendre votre code je bloque encore...
alexandreillusion
Messages postés37Date d'inscriptionlundi 7 juillet 2008StatutMembreDernière intervention14 mars 2011 28 mars 2009 à 17:08
Pour tester le code je l'ai mis dans une form et donc voici le code:
____________________________________________________________
Imports System.Runtime.InteropServices
Public Class Form1
Private Declare Function GetLastInputInfo Lib "user32.dll" (ByRef plii As LASTINPUTINFO) As Long 'testé en Uint32
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long 'testé en Uint32
____________________________________________________________
Private Structure LASTINPUTINFO
Dim cbSize As Long 'testé en Uint32
Dim dwTime As Long
End Structure 'testé en Uint32
___________________________________________________________
' Permet de savoir si l'utilisateur est considéré comme absent. L'intervalle est en secondes
Public Function IsInputIdle(ByVal vIdleTimeout As Long) As Boolean
Dim LII As LASTINPUTINFO
LII.cbSize = Len(LII)
If GetLastInputInfo(LII) <> 0 Then
IsInputIdle = (GetTickCount - LII.dwTime) > (vIdleTimeout)
End If
End Function
____________________________________________________________
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If IsInputIdle(1) Then
MsgBox("ouf")
End If
End Sub
____________________________________________________________
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
End Sub
End Class
____________________________________________________________
alexandreillusion
Messages postés37Date d'inscriptionlundi 7 juillet 2008StatutMembreDernière intervention14 mars 2011 28 mars 2009 à 18:45
C'est bien ce que j'ai fais: changer le long en integer mais les deux variable garde toujours la même valeur 0 et 16 en long et 0 et 8 en integer.
j'ai aussi déclaré les api en integer pour voir mais çà ne change rien.
alexandreillusion
Messages postés37Date d'inscriptionlundi 7 juillet 2008StatutMembreDernière intervention14 mars 2011 28 mars 2009 à 18:53
J'ai compris: j'avais réglé le temps d'inactivité à 1 milliseconde (j'avais retiré le 1000*).
Je vous remercies vraiment du temps que vous avez pris pour m'aider. Et pour m'être utile, ce code, il l'est !!!
J'ai mis un 10/10 autant pour le code que pour votre disponibilité!