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

Windows Forms Discussion :

Fermeture de session windows et Container MDI


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Fermeture de session windows et Container MDI
    Bonjour,
    J'ai créé une application qui se lance au login NT d'un utilisateur. Elle tourne en arrière plan et est accessible via un NotifyIcon. J'utilise pour cette application une form principale avec IsMDIContainer=True. Cette fenêtre est simplement masquée lorsque l'utilisateur clique sur le X de la barre de menu. Par contre, il est possible de quitter completement l'appli via le NotifyIcon. J'utilise un timer sur cette fenêtre qui exécute régulièrement un BackGroundWorker pour synchroniser des données avec une BDD SQL Server 2005. Jusque là, tout fonctionne correctement.
    Le hic apparait lorsque l'utilisateur NT se deconnecte où qu'il arrete le PC. Dans ce cas, le NotifyIcon disparait mais au bout de quelques secondes, Windows me propose de "killer" le processus principal de mon appli.

    Avez-vous une idée ?

    Merci d'avance,
    Version d'Access : 2000

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Dans l'évènement Closed de ta form, vérifie la valeur de e.CloseReason.
    Si ça vaut CloseReason.WindowsShutDown alors tu ne fais pas ton e.Cancel = False
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    Dans l'évènement Closed de ta form, vérifie la valeur de e.CloseReason.
    Si ça vaut CloseReason.WindowsShutDown alors tu ne fais pas ton e.Cancel = False
    ou plutôt l'évènement FormClosing

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    ouai plutôt
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Bonjour,
    J'ai toujours le même problème après les modifs,
    Voici mon code :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
        Private Sub MainForm_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
     
            If e.CloseReason.Equals(System.Windows.Forms.CloseReason.WindowsShutDown) Then
                Exit Sub
            End If
     
            If Not AllowClose And e.CloseReason.Equals(System.Windows.Forms.CloseReason.UserClosing) Then
                Me.AddComment(Date.Now, "Déconnexion de l'utilisateur.")
                Me.Hide()
     
                While Me.BackgroundWorker1.IsBusy
                    Application.DoEvents()
                End While
     
                e.Cancel = True
                For Each MDIChild As Form In Me.MdiChildren
                    MDIChild.Close()
                Next
            Else
                Me.Timer1.Stop()
     
                While Me.BackgroundWorker1.IsBusy
                    Application.DoEvents()
                End While
     
                Me.NotifyIcon1.Visible = False
     
     
     
                CloseConnection(MyConnectionLocale)
                CloseConnection(MyConnectionCentrale)
     
                MyConnectionLocale = Nothing
                MyConnectionCentrale = Nothing
                SyncOnlyParam = Nothing
                CurrentUser = Nothing
                MyIconeInfoTable = Nothing
                MySexeTable = Nothing
                ModeDegrade = Nothing
                IsLogin = False
                AllowClose = Nothing
                IsSync = Nothing
                ModelesGAPEdition = Nothing
                ModelesGAPRapport = Nothing
                ModelesLABAnalyse = Nothing
                PiedDePage = Nothing
                HautDePage = Nothing
                MargeHaut = Nothing
                MargeBas = Nothing
                MargeGauche = Nothing
                MargeDroite = Nothing
                MustReloadForm1DataGridView = Nothing
            End If
    J'ai volontairement placé le If en haut de manière à ne pas exécuter le reste lors de la fermeture de session...

    Merci pour votre aide
    Version d'Access : 2000

  6. #6
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Mais que veux tu faire exactement quand l'utilisateur se déconnecte ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Comme je le disait dans le premier message, lorsque l'utilisateur se déconnecte ou arrête son PC, mon application ne se ferme pas correctement et windows propose de killer le processus...
    Version d'Access : 2000

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Bonjour,
    Problème résolu en ajoutant un application.exit à la fin de ma procédure MainForm_OnClosing. Ceci doit avoir pour effet de terminer également le thread de mon backgroundworker.
    Merci de votre aide
    Version d'Access : 2000

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

Discussions similaires

  1. [XL-2007] Détecter fermeture de session windows
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/12/2017, 05h03
  2. lancer vb à la fermeture de session Windows
    Par jeanmidudu dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/06/2014, 17h47
  3. VBS : interrompre la fermeture de session windows.
    Par prodeo dans le forum VBScript
    Réponses: 0
    Dernier message: 10/09/2009, 14h46
  4. Réponses: 8
    Dernier message: 21/06/2006, 14h43
  5. Détecter la fermeture d'une session Windows
    Par atao29 dans le forum MFC
    Réponses: 1
    Dernier message: 15/02/2006, 11h19

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