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 :

Problème avec mon appli mis en icone dans la barre des tâches


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 42
    Points : 46
    Points
    46
    Par défaut Problème avec mon appli mis en icone dans la barre des tâches
    Bonjour à tous

    J'ai développé une petite appli qui se met dans le systray dès que j'utilise le bouton "minimiser" ou "fermer" pour pouvoir la rappeler facilement quand je veux.

    J'ai utilisé la FAQ VB qui fournit un lien vers le site de Microsoft expliquant comment créer une icone dans le systray.

    Le problème, c'est que lorsque je veux arrêter mon micro, celui-ci ne réagit pas. Je m'explique...

    Si mon appli est dans le systray et que je veuille arrêter mon micro via le bouton "Démarrer" puis "arrêter", rien ne se passe... Par contre, il suffit que je clique sur l'icône de mon appli dans le systray avec le bouton droit, que je clique sur "Quitter" dans le menu qui apparait pour que l'appli s'arrête, puis que je refasse la manip pour arrêter mon micro ça marche...

    Savez-vous ce qui peut coincer la fermeture de mon micro ? Est-ce la méthode proposée par Microsoft en Visual Basic qui est responsable de ce dysfonctionnement ?

    Pour info, c'est peut-être utile, je travaille sur un micro en réseau avec Windows NT 4 (eh oui, ma boîte n'est pas à jour, je pense qu'avec XP je n'aurais pas ce problème).

    Merci d'avance .

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Bonsoir,

    as-tu rajouté une procédure événementielle pour Form_QueryUnload ..., peu- t'on voir son code .?

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        If MenuQuit = False Then
            Shell_NotifyIcon NIM_ADD, nid
            Me.Hide
            Cancel = True
        End If
    End Sub
    La variable MenuQuit est à False au démarrage de l'appli et passe à True si je clique avec le bouton droit sur l'icone dans le systray puis sur "Quitter" dans le menu contextel qui s'affiche.

    Ca me permet de réduire l'appli dans le systray quand je clique sur le bouton "minimiser" ou sur le bouton "fermeture" de la fenêtre de l'appli, au lieu de fermer purement et simplement l'appli.

    La seule façon pour fermer l'appli est de passer par le menu contextuel de l'icone présente dans le systray.

    Si MenuQuit est à True, la Sub Form_unload suivante est exécutée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Unload(Cancel As Integer)
        Shell_NotifyIcon NIM_DELETE, nid
    End Sub
    Celle-ci supprime l'icone dans le systray.


  4. #4
    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
    Pourquoi ajouter une variable "MenuQuit" alors que tu peux tester UnloadMode ?

    Si UnloadMode = vbFormControlMenu, c'est que l'utilisateur à cliqué sur la croix de fermeture de la fenetre, donc tu peux aussi écrire une procédure pour Form_Resize, si le satus de la fenetre est VbMinimised tu appelles la procédure Form_QueryUnload en forçant unloadmode = vbFormControlMenu.

    Ca pourrait aller comme ça non et donc sans ta variable ?

    Tu peux aussi tester si unloadmode = vbAppWindows c'est que la session Windows est en cours de fermeture. Enfin bref, à mon avis en jouant avec unloadmode, tu devrais trouver la solution à ton pb

  5. #5
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Ouaich !!! Bien joué Ohmonbato

    J'avais l'habitude de gérer la fermeture de mes forms avec une variable (c'est bizarre, j'ai l'impression que la FAQ VB donnait cette astuce avant ), mais c'est bien plus simple comme ça.

    Il est vrai que la variable ne passait pas à True quand le système essayait de fermer la session.

    J'aurais du y penser avant. Quoi qu'il en soit, merci.

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

Discussions similaires

  1. Rappel outlook masqué sous icone dans la barre des tâches
    Par TeamArkadia dans le forum Windows 7
    Réponses: 2
    Dernier message: 31/01/2012, 15h06
  2. Réponses: 7
    Dernier message: 14/11/2011, 00h41
  3. [Virus?] icone dans la barre des tâches
    Par Damouille dans le forum Sécurité
    Réponses: 23
    Dernier message: 12/06/2007, 20h19
  4. mettre une appli en icone dans la barre des taches
    Par oeil de nuit dans le forum Windows
    Réponses: 10
    Dernier message: 14/08/2006, 14h43
  5. Pb icone dans la barre des taches
    Par lbailler dans le forum Access
    Réponses: 4
    Dernier message: 12/11/2004, 12h38

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