Detecter une NON action ...

Résolu
alexandreillusion Messages postés 37 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 14 mars 2011 - 26 mars 2009 à 22:40
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 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 ?

Merci pour le temps que vous m'accorderez.

http://les-baladins.org   Le site du spectacle.

10 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mars 2009 à 00:22
j'ai ca en VB6

http://www.vbfrance.com/codes/TESTER-PRESENCE-UTILISATEUR-ISINPUTIDLE_34319.aspx

a toi de porter en .Net

Renfield
Admin CodeS-SourceS- MVP Visual Basic
3
alexandreillusion Messages postés 37 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 14 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.

Merci pour votre temps.

Alexandre

http://les-baladins.org   Le site du spectacle.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2009 à 03:14
Windows stocke l'heure de derniere saisie clavier, de dernier deplacement souris.
on récupère l'info et on compare avec l'intervalle attendu.

pour jouer avec :

place un Timer avec l'interrvalle d'une seconde, par exemple, et :

If IsInputIdle(10 * 60) Then
    ... Action !!
End If

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
alexandreillusion Messages postés 37 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 14 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...

Merci de votre temps et de votre aide.

http://les-baladins.org   Le site du spectacle.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2009 à 16:37
quel est ton code ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
alexandreillusion Messages postés 37 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 14 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
____________________________________________________________

Merci encore de votre aide.

Alexandre.
http://les-baladins.org   Le site du spectacle.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2009 à 18:30
les Long de VB6 deviennent des Integers en .Net.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
alexandreillusion Messages postés 37 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 14 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.

Je ne comprend pas ...

http://les-baladins.org   Le site du spectacle.
0
alexandreillusion Messages postés 37 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 14 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é!

Encore merci !

Alexandre

http://les-baladins.org   Le site du spectacle.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2009 à 20:10
Merci et bonne continuation

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous