IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Comment connaitre l'état d'une session windows ?


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Comment connaitre l'état d'une session windows ?
    Bonjour,
    Je bosse sur un p'tit programme qui est presque fini, mais il y a encore un problème que je ne sais pas résoudre : je voudrais que certaines fonctions effectués par mon programme (à savoir, mettre à jour un fichier) ne soient effectués que si la session Windows est active (pas seulement ouverte ! Mais vraiment active, c'est à dire que l'utilisteur est actuellement sous cette session). En gros, je veux que quand quelqu'un fasse "changer d'utilisateur" en laissant l'autre session (celle où mon programme est en cours d'execution) en arrière plan, mon programme puisse le savoir et ainsi ne pas mettre à jour le fichier.

    Donc comment savoir si la session sur laquelle mon programme est executé est active ?

    Autre chose : est-il simple de détecter l'activité d'un utilisateur ? (voir si la souris bouge fréquement, etc)

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 107
    Points : 16 630
    Points
    16 630
    Par défaut
    bonjour
    dans une Form :
    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
    24
    25
    26
    27
    28
    29
     
    Private Sub Form_Load()
     
    ChemiN = String(255, vbNullChar)
    ReturnLength = GetSystemDirectory(ChemiN, Len(ChemiN))
    ChemiN = Left(ChemiN, ReturnLength)
    CheminDossier = ChemiN & "\"
     
    ChemiN = String(255, vbNullChar)
    ReturnLength = GetUserName(ChemiN, Len(ChemiN))
    NameSessionniste = Trim$(ChemiN) ' Nom du sessionniste
     
    Msg$ = " Démarage " & String$(6, ">") & " ''" & NameSessionniste & "'' " & String$(6, "<")
    MeDate = CDate("01/01/2000")
     
    EcritJournal
    End Sub
     
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Cancel = 1
    Select Case UnloadMode
     Case 0: Msg$ = "L'utilisateur a choisi dans le menu Système de la feuille la commande Fermeture."
     Case 2: Msg$ = "la session Microsoft Windows en cours prend fin"
     Case 3: Msg$ = "Le Gestionnaire de tâches de Microsoft Windows ferme l'application."
     Case Else: Msg$ = "Processus d'arret du programme non connu."
    End Select
    EcritJournal
    Cancel = 0
    End Sub
    voici une portion de code qui me permet de savoir le nom du sessioniste qui a utilisé mon programme (EcritJournal)
    Dans un module :
    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
    24
     
    Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
           (ByVal lpBuffer As String, nSize As Long) As Long
    Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" _
           (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Public MeDate As Date
    Public Msg$
    Public NameSessionniste As String
    Public CheminDossier As String
    Public ChemiN As String
    Public ReturnLength As Long
     
    Public Sub EcritJournal()
    Dim NumFich As Integer
    NumFich = FreeFile()
    Open CheminDossier & "WinLogSpc.CRY" For Append As #NumFich
    If MeDate <> Date Then
     MeDate = Date
     Print #NumFich, " ": Print #NumFich, CStr(Time$) & " le " & CStr(Date) & Msg$
     Else
     Print #NumFich, CStr(Time$) & " " & Msg$
    End If
    Close #NumFich
    End Sub
    source MSDN
    Private Sub Form_QueryUnload(cancel As Integer, unloadmode As Integer)

    La syntaxe de l'événement QueryUnload comprend les éléments suivants :

    Élément Description
    cancel Entier qui, si sa valeur est différente de 0, arrête l'événement QueryUnload dans toutes les feuilles chargées et empêche la fermeture de la feuille et de l'application.
    unloadmode Valeur ou constante indiquant la cause de l'événement QueryUnload, comme indiqué dans la section Valeurs renvoyées.


    Valeurs renvoyées

    L'argument unloadmode renvoie les valeurs suivantes :

    Constante Valeur Description
    vbFormControlMenu 0 L'utilisateur a choisi dans le menu Système de la feuille la commande Fermeture.
    vbFormCode 1 L'instruction Unload est invoquée à partir du code.
    vbAppWindows 2 La session Microsoft Windows en cours prend fin.
    vbAppTaskManager 3 Le Gestionnaire de tâches de Microsoft Windows ferme l'application.
    vbFormMDIForm 4 Une feuille MDI fille se ferme en raison de la fermeture de la feuille MDI.
    vbFormOwner 5 Une feuille se ferme en raison de la fermeture de son propriétaire.


    Ces constantes sont répertoriées dans labibliothèque d'objets Visual Basic (VB) de l'Explorateur d'objets.

    Remarques

    Cet événement est en principe utilisé pour s'assurer qu'il ne reste aucune tâche inachevée dans les feuilles d'une application avant sa fermeture. Par exemple, si un utilisateur n'a pas encore enregistré de nouvelles données dans une feuille quelconque, votre application peut l'inviter à procéder à leur enregistrement.

Discussions similaires

  1. Connaitre l'état d'une session pour un serveur distant
    Par ala1986 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/12/2012, 21h57
  2. Comment détecter l'ouverture et la fermeture d'une session Windows avec Java
    Par nhila8 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 18/03/2012, 16h37
  3. Comment connaitre l'utilisateur d'une session
    Par zolive dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 08/02/2010, 16h34
  4. Comment détecter si une session Windows est ouverte?
    Par yosthegost dans le forum Delphi
    Réponses: 3
    Dernier message: 23/05/2006, 17h42
  5. Réponses: 1
    Dernier message: 12/05/2004, 19h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo