Accueil > Forum > > > > retirer l'icone systray d'une app externe
retirer l'icone systray d'une app externe
jeudi 29 juillet 2004 à 16:51:09 |
retirer l'icone systray d'une app externe

devloop2
|
Bonjour à tous ! (c'est mon premier post ici ;) ) d'abord j'espère ne pas me tromper de section... Voilà j'utilise un logiciel qui met son icone dans la zone de notification (systray) près de l'horloge et j'aimerais faire une petite appli qui puisse la cacher (l'icone) quand je le souhaite. Le logiciel fonctionne avec une fenêtre (invisible toutefois) donc l'utilisation de FindWindow est possible pour récupérer un handle sur cette fenêtre. Logiquement il suffit ensuite d'envoyer un message à cette fenêtre en utilisant Shell_NotifyIcon. Le problème c'est qu'il faut passer les bons paramêtres à cette fonction, surtout la structure de l'icone. J'ai lu dans la doc MSDN que l'uID de l'icone et le handle de la fenêtre devrait suffire... Pour le handle on l'a grâce à FindWindow... Pour l'ID ça se complique... Je débute en visual c++ mais je me suis dit que je pourrais trouver cet ID avec ResourceHacker. Après avoir comparé des sources avec les résultats de RH je pense que l'ID de mon icone est 150 (IconGroup dans RH...) donc j'envoie mon Shell_NotifyIcon à la fenêtre de mon soft et évidemment il se passe rien (ben fallait pas réver non plus :D ) enfin tout ça pour dire que je bloque... si vous avez des idées pour faire disparaître cette icone de mon systray merci de me les soumettre :) ps: j'espère avoir été clair (gnè !?) j'en ai mal à la tête :(
|
|
mercredi 25 août 2004 à 12:10:08 |
Re : retirer l'icone systray d'une app externe

Pamaury
|
je suis en train d'essayer une méthode(mais j'ai quelque pb encore) qui consiste à récupérer le HWND du systray puis à en énumérer les boutons puis à en obtenir les info mais à chaque fois que je veux obtenir les info, la sys tray bug et plante donc pour l'instant c'est pasq encore çà mais je cherche ...
|
|
mercredi 25 août 2004 à 21:39:29 |
Re : retirer l'icone systray d'une app externe

youpiyoyo
|
je suis intéressé par ton post car moi aussi je cherche a faire cela..
je m'étais deja penché sur la question , sans trouver encore la solution. en regardant dans spy++ il y a rien de significatif et de commun pour tous les ico des sys tray.
jette un oiel sur ma source HIDE ET UNHIDE A PROGRAMME+ SYSTEM TRAY AUX CHOIX!!!!, il y a une bonne énumération des class filles et parents d'un prog, genre bouton, list view, et ico sys tray,... mais j'ai rien trouvé pour identifé kom élément pour l'ico du systray. youpi :)
|
|
mercredi 25 août 2004 à 23:27:25 |
Re : retirer l'icone systray d'une app externe

Pamaury
|
Bon je poste l'état de ma source: void TestSysTrayCommand() { HWND hwnd=FindWindow("Shell_TrayWnd",""); if(hwnd==NULL) { std::cout<<"Cannot find the Shell_TrayWnd !\n"; } else { std::cout<<"Shell_TrayWnd finded!\n"; HWND hwnd2=FindWindowEx(hwnd,NULL,"TrayNotifyWnd",""); if(hwnd2==NULL) { std::cout<<"Cannot find the TrayNotifyWnd !\n"; } else { std::cout<<"TrayNotifyWnd finded!\n"; HWND hwnd3=FindWindowEx(hwnd2,NULL,"SysPager",""); if(hwnd3==NULL) { std::cout<<"Cannot find the SysPager !\n"; } else { std::cout<<"SysPager finded!\n"; HWND hwnd4=FindWindowEx(hwnd3,NULL,"ToolbarWindow32",NULL); if(hwnd4==NULL) { std::cout<<"Cannot find the ToolbarWindow32 !\n"; } else { LRESULT numberButtons=SendMessage(hwnd4,TB_BUTTONCOUNT,0,0); std::cout<<"ToolbarWindow32 finded!\n"; std::cout<<"Shell_TrayWnd/TrayNotifyWnd/SysPager/ToolbarWindow32>\n"; std::cout<<"+-Number of buttons:"<<numberButtons<<"\n"; for(int i=0;i<numberButtons;i++) { std::cout<<" +-Button_"<<i<<"\n"; //std::cout<<" +-text:\""<<str<<"\"\n"; } HWND tooltip=(HWND)SendMessage(hwnd4,TB_GETTOOLTIPS,0,0); if(tooltip==NULL) { std::cout<<"TB_GETTOOLTIPS failed: no tooltip associated\n"; } else { LRESULT toolNumber=SendMessage(tooltip,TTM_GETTOOLCOUNT,0,0); std::cout<<"+-tooltip:\n"; std::cout<<" +-tool number:"<<toolNumber<<"\n";
for(int i=0;i<toolNumber;i++) { TOOLINFO ti; ti.cbSize=sizeof(TOOLINFO); if(!SendMessage(tooltip,TTM_ENUMTOOLS,i,(LPARAM)(LPTOOLINFO)&ti)) { std::cout<<"TTM_ENUMTOOLS failed for i="<<i<<"\n"; } else { std::cout<<" +-tool_"<<i<<":\n"; std::cout<<" +-ID:"<<ti.uId<<"\n"; std::cout<<" +-rect:{"<<ti.rect.left<<","<<ti.rect.top<<","<<ti.rect.right <<","<<ti.rect.bottom<<"}\n"; std::cout<<" +-text:"<<ti.lpszText<<"\n"; } } } } } } } std::cin.get(); }
|
Le problème c'est que l'appel suivant: SendMessage(tooltip,TTM_ENUMTOOLS,i,(LPARAM)(LPTOOLINFO)&ti);
|
Fais bugger la systrayne idée ?
|
|
jeudi 26 août 2004 à 21:54:40 |
Re : retirer l'icone systray d'une app externe

youpiyoyo
|
alors fodrai ke je m'y repenche et c du temps vu ke je pars dem'1 prendre mes vacances, j'aurai pas le temps, donc c un post ke je vais suivre dans le temps....
je vais copier ton code et faire des tests et mixer avec une source ke j'avais précisé plus haut.
fais chier car j'ai pas spy++ d'installé,j'aurai bien fais une verif maintenant, mais je suis entrain de regarder ton code et a mon avis tu est pas loin de la solution,
il y a kan meme un truc ki m'interpel:
d'apres ce ke je comprend de ton code "Shell_TrayWnd" serait donc le nom de la class du system tray???
et tu enumeres toutes les balloons ou tooltips, ke tu veux faire correspondre a celui du prog désiré...
si j'ai bien compris ce ke tu as codé est ce ke tu recherches, cela ne serait pas plus simple d'énuméré toutes les classes de ton prog choisi, et de voir s'il partie de "Shell_TrayWnd"??? (parent)
enfin c com ca ke je le vois mais si j'ai pas bien compris ton code, pourais tu me l'expliké!! merci @+
youpi :)
|
|
jeudi 26 août 2004 à 23:32:41 |
Re : retirer l'icone systray d'une app externe

Pamaury
|
non ce serai trop beau en fait mon récupère un handle sur la systray(de classe "ToolbarWindow32 " mais en fait voilà l'arborescence: +-Shell_TrayWnd +-Shell_TrayWnd +-SysPager +-ToolbarWindow32 (ce qui nous interesse) Une fois que j'ai ce handle, je lui demande de me donner un handle sur le tooltip puis je demande au tooltip de m'énumérer tous les message enregistré et c'est là que çà bug
|
|
vendredi 27 août 2004 à 12:48:33 |
Re : retirer l'icone systray d'une app externe

youpiyoyo
|
ok,je comprend ce ke tu veux faire mais a mon avis c pas com ca k'il fo si prendre... a mon humble avis :)
je te conseil de voir ma source "HIDE ET UNHIDE A PROGRAMME+ SYSTEM TRAY AUX CHOIX!!!!",
il y a certainement des trucs ki peut te faire avancé notament l'enumération des filles et parents d'un élément, class, hwnd etc...
mon prog est fais a la base kom le spy++, tu click avec le pointeur une fenetre et elle le met dans le sys tray.... genre outlook etc...
en fait je suis arriver a un probleme kan tu click sur un bouton ou une list view, enfin bref un element d'un prog cela merdé car cela recupéré le hwnd du bouton,etc... j'ai donc fais une énumération des classes appartenant à l'objet clické pour recup le parent et z-top level des windows....
bref avec un iswindow je test si c la fenetre....
tout ca pour en venir au faite ke dans mon énumération j'ai a l'intérieur de mon énumération une class appartenant et dépendant au systray... (fait un messagebox pour verif tu vera)
ce ke je savais pas a l'époke c ce ke tu viens de m'apprendre c ca: "+-Shell_TrayWnd +-Shell_TrayWnd +-SysPager +-ToolbarWindow32 (ce qui nous interesse) " a l'époke je n'avais pas trouvé de correspondance mais , desouvenir il me semble k'en explorant avec spy++, le type systray varie en fonction des prog et de celui ki l'a programmé
enfin bref, je pense k'il fodrai ke tu jette un oeil a ma source peut etre ke ca va t'aidé, moi je m'y penche dans 1 emaine car je pars en vacance dans 2 h et je ne pourai pas te répondre d'ici la...
@+ youpi :)
|
|
vendredi 10 septembre 2004 à 16:18:42 |
Re : retirer l'icone systray d'une app externe

devloop2
|
lut ! désolé pour cette réponse tardive  merci pour votre aide à tous les deux... je vais étudier ça + 
|
|
vendredi 10 septembre 2004 à 18:50:16 |
Re : retirer l'icone systray d'une app externe

Pamaury
|
A mon avis le pb est que le pointeur retourné dans mon prog n'est valable que dans le processus du sys tray et pas dans celui où j'appel .
|
|
jeudi 2 décembre 2004 à 15:29:25 |
Re : retirer l'icone systray d'une app externe

youpiyoyo
|
ecoute j'ai avancer dans ce domaineva voir la source de "VB" ki est po mal http://www.cppfrance.com/code.aspx?ID=24855
ainsi ke la mienne plus graphike: http://www.cppfrance.com/code.aspx?ID=27923
bientot j'integrerai tout dans mon tray manager donc jetter un coup d'oel dans les prochains jours youpi :)
|
|
Cette discussion est classée dans : icone, handle, id, fenêtre, systray
Répondre à ce message
Sujets en rapport avec ce message
Icone et Dialogue [ par sebastienbro ]
Bonjour,J'ai un dialogue que j'affiche grâce a CreateDialog. Jusque là aucun problème.Seulement, j'ai mis une image, et je voudrai insérer dans mon im
changer l'icone d'un programme compiler [ par Mike ]
Salut, je bosse ss visual C++ en win32, j'aimerais savoir comment changer l'icone d'un programme compiler, sachant que je fé un MAKEINRESSOURCE(ID_ICO
Récupération d'ID de fenêtre enfant [ par amauro ]
Bonjour à tous!Comment fait-on pour récupérer l'ID de la fenêtre enfant dans le cas d'une application MDI?Merci d'avance de votre réponse.
Processus & Handle [ par ro0tsman ]
Bonjour all,je voudrai savoir s'il est possible de trouver le handle d'une fenêtre à partir de son processus (id) ?Sinon de manière générale, comment
ressources, aide pour menu pour icone dans la systray [ par leprov ]
salut a tous.voila j'aimerais savoir si avec l'editeur de ressources de visual c++, il est possible de faire changer un titre dans le menu qu'on crée
Récuperer le Handle d'une icone (VC++)? [ par Frenchy62620 ]
J'ai une icone crée dans mon projet (visual C++) (.rc)je veux mettre cette icone sur plusieurs boutons créé dynamiquement par CreateWindow("button".
"Petit" problemme de HANDLE [ par Jab_834 ]
Bonjour a tous !Alor voilà mon probleme, j'ai dans mon application , écrit une fonction permettant de lancer un autre programme externe, que je n'ai p
ICON buton [ par abdoulax ]
Encore une question, Je voudrai insérer une icone dans un bouton voici ce que g trouvé : SendMessage(HWND,BM_SETIMAGE,(WPARAM) IMAGE_ICON,(LPARAM)hand
Handle de listbox avec C++Builder [ par laurentl2000 ]
J'ai créé une listbox dans une form avec C++Builder. Comment faire pour trouver le handle de la listbox ?Si son ID était fixe, je pourrais faire ceci
Fenêtre bureau et format icone [ par plom ]
Bonjour Je souhaiterai réaliser une petite appli. J'aimerai faire un genre de menu démarrer mais sur le bureau.La fenêtre de l'appli devra être qqchos
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|