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

C++Builder Discussion :

effacer un trayIcon


Sujet :

C++Builder

  1. #1
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut effacer un trayIcon
    Bonjour,

    J'ai une petite appli qui losqu'elle se lance place un TrayIcon dans la bare en bas à droite. Mais si je détruit cette application via le gestionnaire de programme, l'icon persite, malgré l'absence de l'application auquel il fait référence. Comment forcer l'éffacement de cette icon ?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Bonjour

    Avant de fermer ton appli, accorde lui juste un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TrayIcon1->Visible=false;


    Bonne journée,
    FluidBlow.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 169
    Par défaut
    Salut uriotcea .
    Pour que le TrayIcon ne reste plus il faut terminer l'App avec le clique sur Close ou avec le programme lui meme.
    Exemple:
    faire un Boutton en double clique maittez ça:
    ou

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Citation Envoyé par FluidBlow
    Bonjour

    Avant de fermer ton appli, accorde lui juste un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TrayIcon1->Visible=false;


    Bonne journée,
    FluidBlow.
    Ah désolé, j'avais mal lu.
    Je crois que c'est impossible de détruire l'icone d'un TTrayIcon lors d'un stop avec le gestionnaire de programme.
    Pour fermer ton application, tu dois passer par l'application elle même pas le gestionnaire de programme qui lui, stop seulement ton application, mais ne la ferme pas

    Bonne soirée.
    FluidBlow.

  5. #5
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Essaye de mettre le code de FluidBlow dans l'evenement OnDestroy de ta Form principale, mais je ne suis pas sur que ca marche.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Négatif, je viens d'essayer...

    Mais je le repete encore une fois, il me semble qu'il est impossible de modifier quoi que ce soit sur l'application lorsque l'on le stop avec le gestionnaire. (dites le moi si je me trompe)

    Désolé !
    FluidBlow.

  7. #7
    Membre expérimenté Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Par défaut
    Faux!

    Vois avec l'évènement "OnDesTroy" de la fiche contenant le TrayIcon ou bien son évènement OnClose.
    Tu y places le fameux code pour rendre le Tray Icon non visible.

    Tu peux refuser un ordre d'arrêt venant du gestionnaire des tâches, je l'ai déjà fait... Dans une application avec des Socket, avant la destruction de la fiche il fallait absolument que je ferme les sockets ouverts sinon j'avais des instabilités avec des corruptions...

    Maintenant, à la destruction de la fiche, je peux fermer mes sockets et même qu'avant de les fermer je peux avertir tous les utilisateurs connectés sur le port d'écoute principal....

    Personellement, je me suis aperçu que même en fermant l'application par son bouton "Close" soit une fermeture à priori normale, j'avais des phénomènes de persistances... liés par exemple aux opérations en cours dans mon application ou consécutive de l'arrêt du programme... Il semblerait même que la barre des tâche ai un délai de raffraichissement...
    Par contre siu tu mets le curseur de la souris par dessus la fameuse icône, l'icône disparait...

  8. #8
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Salut,

    En jouant avec le OnDestroy de la TForm, l'icone reste bien la quoi qu'il advienne...dois y avoir un truc a faire en plus.

    @ +

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Citation Envoyé par Sunchaser
    Salut,

    En jouant avec le OnDestroy de la TForm, l'icone reste bien la quoi qu'il advienne...dois y avoir un truc a faire en plus.

    @ +

    Oui, je l'ai dit, c'est impossible de l'enlever, à moins que je me trompe bien sur ^^...

    Mais je ne comprend toujours pas pourquoi tu veux que l'icone du systray s'enlève lorsque tu stoppes l'application...Pourquoi ne pas la fermer tout simplement ?
    La stopper n'aboutis à rien mis a part de l'arretter, si on a mis un code foireux...

    Cordialement,
    FluidBlow.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Citation Envoyé par Mattetfamilly
    Faux!

    Vois avec l'évènement "OnDesTroy" de la fiche contenant le TrayIcon ou bien son évènement OnClose.
    Tu y places le fameux code pour rendre le Tray Icon non visible.

    Tu peux refuser un ordre d'arrêt venant du gestionnaire des tâches, je l'ai déjà fait... Dans une application avec des Socket, avant la destruction de la fiche il fallait absolument que je ferme les sockets ouverts sinon j'avais des instabilités avec des corruptions...

    Maintenant, à la destruction de la fiche, je peux fermer mes sockets et même qu'avant de les fermer je peux avertir tous les utilisateurs connectés sur le port d'écoute principal....

    Personellement, je me suis aperçu que même en fermant l'application par son bouton "Close" soit une fermeture à priori normale, j'avais des phénomènes de persistances... liés par exemple aux opérations en cours dans mon application ou consécutive de l'arrêt du programme... Il semblerait même que la barre des tâche ai un délai de raffraichissement...
    Par contre siu tu mets le curseur de la souris par dessus la fameuse icône, l'icône disparait...

    Je crois que tu n'as pas très bien répondu à la question mère non ? Il parlait juste en "stoppant" l'application, non en la fermant (ce que je ne comprends pas) ...

    Cordialement,
    FluidBlow.

  11. #11
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Merci de toutes vos suggestion, mais je n'est pas été assez claire. En fait j'avais deja tenté sans succé vos suggestion.
    En fait mon application est detruite par une autre qui s'installe à sa place. Et là est mon souci parce que je fait ca régulierement et à la fin j'ai une tripoté de trayicons persistants.
    Je me demandais si l'application qui détruit la premiere ne pouvais pas acceder par les message windows ou autre à la premiere pour lui dire de metre Tryacon->visible à false avant de la detruire. Mais je ne sais pas trop comment faire ca. Je pense que c'est la seul solution.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Je pense que tu pourras passer par windows pour lui envoyer un message grace au Handle, mais je ne pourrait pas t'aider plus.
    En attendant, tu peux toujour créer un fichier ini (ou dans une base de registre) enfin, bref, un support writable et readable. Sur ton app1, tu fais un timer qui vérifié à chaque fois si il y a du nouveau dans le fochier ini, par conqéquent, une fonctions à executer et sur ton app2 (qui détruit l'autre) tu lui dit d'écrire ses instructions dans le support pour que l'autre le lise après

    Mais bon, c'est plutot du bidouillage, mais ça dépend ce que tu veux faire.

    Cordialement,
    FluidBlow

  13. #13
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    J'ai plus ou moins réussi en utilisant les message windows

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    HWND h=FindWindow(NULL,"TWServer");
    if (h!=NULL) SendMessage(h,WM_SYSCOMMAND,SC_CLOSE,0);
     
    void __fastcall TServer::FormClose(TObject *,TCloseAction &)
    {
    TrayIcon1->Visible=false;
    }
    Ca semble marcher, mais etrangement ca détruit aussi mon parfois exploreur et donc aussi mon bureau windows !

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Alors sa doit venir de ton findWindows, assure toi de ne bien séléctioner QUE ton application par conséquent ton findWindows doit etre net et précis, pas du bidouillage...

    Cordialement,
    FluidBlow

  15. #15
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Ok, mais que veux tu dire par 'bidouillage'

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Je pense qu'il faudrait modifier ton findWindow pour qu'il ne recherche que ta fenetre parceque à mon avis, il ne recherche pas que ta fenetre mais aussi celle des autres, c'est embêtant

    Cordialement,
    FluidBlow.

  17. #17
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    pas tres constructif tes remarques!
    Habituellement on est toujours sure avant de rencontrer des bugs.

  18. #18
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Une bonne solution pourrait effectivement être de travailler avec le Handle de tes TrayIcon. Si la destruction via les OnDestroy etc de tes TrayIcon ne fonctionne pas tu peux essayer une démarche suivante :

    Tu stockes dans un fichier ou dans la base de registre le Handle de chaque icone actif.

    Au lancement du programme :
    1. Détruire les icones dont le HANDLE est dans la liste
    2. ajouter le Handle de son icone à la liste


    Quand le programme se termine normallement : supprimer le Handle de son icone de la liste.

    Pour travailler directement avec le Handle tu peux regarder la source BCB que j'ai posté concernant les TrayIcon (page Sources BCB, mot clef "notification").
    ! ATTENTION ! Il serait très judicieux de vérifier si le handle que tu as dans ta liste correspond bien à celui d'un TrayIcon avant de le détruire. Mais ca je ne vois pas comment faire...

  19. #19
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Merci de ta suggestion je vais creuser cette idée. Meme si la methode des message windows semble fonctionner correctement maintenant, elle ne me satisfait pas totalement.

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

Discussions similaires

  1. effacer les anciens trayicons des mes applis?
    Par korntex5 dans le forum Langage
    Réponses: 9
    Dernier message: 11/12/2013, 14h18
  2. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 18h54
  3. Comment effacer des Items d'un TListView ?
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/11/2002, 10h19
  4. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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