Retirer icone taskbar [Résolu]

Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Dernière intervention
19 décembre 2008
- - Dernière réponse : julienbj
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Dernière intervention
19 décembre 2008
- 23 janv. 2005 à 13:01
Voila mon probleme!
Je cherche à supprimer des icones de la taskbar, mais il me manque un parametre
Voici la boucle de suppression:

HWND hIcon;
NOTIFYICONDATA icon;


if (NULL (hIcon FindWindow("Recept_Tel", NULL)))
break;
icon.cbSize = sizeof(NOTIFYICONDATA);
icon.hWnd = hIcon;
icon.uID = 101; //Le probleme est ici
Shell_NotifyIcon(NIM_DELETE, &icon);
Le probleme est a la ligne icon.uID;
Si l'icone que je veux supprimer est l'icone d'un des programmes que j'ai fait, aucun probleme, je connais son identifiant, mais si l'icone à supprimer est a un autre programme que j'ai installé, comment dois-je faire pour recuperer l'identifiant de l'icone?
Merci de votre aide
PS:je travaille uniquement en C, sans les MFC!

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
585
Date d'inscription
mardi 26 novembre 2002
Dernière intervention
29 mai 2015
3
Merci
J'ai bien peur que ce soit plus compliqué que cela...
Si tu regardes bien MSDN : (au paramètre uID de NOTIFYICONDATA)

Application-defined identifier of the taskbar icon. The Shell uses hWnd and uID to identify which icon to operate on when Shell_NotifyIcon is invoked. You can have multiple icons associated with a single hWnd by assigning each a different uID.

Donc l'ID n'est pas suffisant il te faut aussi le handler auquel est associé l'icone. Dans ton code tu récupères une fenêtre mais je ne sus pas convaincu que ce soit la bonne...

En supposant que ce soit la bonne (peu de chances - je le repète), tu peux toujours tenter un algo type force brute : tu essaies tous les ID. Avec un code du style:

const int MAX_ID = 99999;
for (icon.uID=0; icon.uID<MAX_ID; icon.uID++)
{
if ( Shell_NotifyIcon(NIM_DELETE, &icon) )
{
printf( "L'ID vaut %d\n", icon.uID );
break;
}
}
if ( icon.uID>MAX_ID )
printf( "ID non-trouvé\n" );

Et si ça marche tu auras l'ID donc plus besoin de te retaper la boucle à chaque fois.

Bon courage

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de garslouche
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Dernière intervention
19 décembre 2008
2
0
Merci
Pour ce qui est du handle, pas de probleme, c'est le bon!
Le seul souci vec le handle, c'est si plusieurs fenetres ont le même classname, auquel cas, il faut les différencier avec le second parametre de FindWindow
Sinon, merci pour l'idée de scanner tous les identifiants, c'est vrai qu'une fois cela fait, plus besoin de le repeter!
Merci bien

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Commenter la réponse de julienbj

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.