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.NET Discussion :

Windows Service : Comment détecter la fermeture de la session windows actuelle ?


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Apprenti développeur
    Inscrit en
    Février 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 102
    Points : 58
    Points
    58
    Par défaut Windows Service : Comment détecter la fermeture de la session windows actuelle ?
    Bonjour,

    J'aimerais savoir comment détecter sur un windows service, quand est-ce que la session actuelle se ferme..
    En effet, mon service continue de tourner apres la fermeture de session, ce qui est perturbant, car il fonctionne avec un pipe.

    N'y aurait-il pas un genre de onSessionClosed?

    (Mon service est un pipe server, et je veux faire un server.Disconnect() au moment ou la session se ferme).

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    En fouillant un peu sur le net, j'ai trouvé cette discussion qui manifestement traite ce problème :
    http://forum.codecall.net/topic/7021...ndows-service/

    Je n'ai pas approfondi, donc ...
    Bonne journée.

  3. #3
    Membre du Club
    Homme Profil pro
    Apprenti développeur
    Inscrit en
    Février 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    Merci pour ta réponse ebastien.

    J'ai essayé de décortiquer et d'adapter ce qu'il y avait dans le tuto dans mon code.

    J'ai d'abord mis dans la propriété du service le CanHandleSessionChangeEvent à True, puis rajouté cette fonction dans mon service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Protected Overrides Sub OnSessionChange(changeDescription As System.ServiceProcess.SessionChangeDescription)
           'MyBase.OnSessionChange(changeDescription)
     
            If changeDescription.Reason = ServiceProcess.SessionChangeReason.SessionLogoff Then
     
                serverMsg.Disconnect()
                End
     
            End If
        End Sub
    Mais ça ne fonctionne pas, cependant je sens que je touche au but.

    NOTE : J'ai mis "END" dans la condition pour voir si le service se stoppait net une fois la session Log Off... Mais ce n'est pas le cas.. Ou ai-je planté?

    Merci beaucoup

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    un service est un programme lancé au démarrage de windows sur une session virtuelle
    un utilisateur ouvre ensuite sa session, qui n'est pas la même
    il peut y avoir plusieurs sessions utilisateurs ouvertes à un instant T
    le code trouvé pour détecter le changement de session ne peut pas fonctionner dans ton cas, car la session dans laquelle ton service tourne n'est jamais fermée, elle est invisible et non liée à un utilisateur

    quand on choisit de faire un service windows, c'est en général qu'on a besoin que le programme tourne tout le temps, même quand aucun user n'est loggé

    je te dirais bien de faire un programme qui se lance à l'ouverture de session (et qui lui se fermera à la fermeture de session car tous les programmes se ferment à ce moment) mais je ne suis pas sur que ca te convienne

    peux tu expliciter pourquoi tu voudrais que ton service s'arrête ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre du Club
    Homme Profil pro
    Apprenti développeur
    Inscrit en
    Février 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    C'est bon ça fonctionne, j'ai mal désinstallé le service.

    En fait le End, c'etait juste un test pour voir si la fonction avait de l'effet, mais en aucun cas je veux que mon service s'arrete.

    La pour le coup il s'arrête, donc j'ai enlevé le "End". Tout ce que je voulais, c'était de close le serverPipe, car quand je ferme / rouvre la session. le pipe client se ferme, mais pas le pipe server (le prog service). Du coup pour libérer le pipe, je fais en sorte que lorsqu'on log out, le service se déconnecte du pipe.

    Ca a l'air de fonctionner comme sur des roulettes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 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
  2. Détecter la fermeture d'une session Windows
    Par atao29 dans le forum MFC
    Réponses: 1
    Dernier message: 15/02/2006, 11h19
  3. [Word] Comment détecter la fermeture ?
    Par Franckie dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 14/11/2005, 15h13
  4. Réponses: 4
    Dernier message: 26/06/2005, 23h28

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