Retirer icone taskbar [Résolu]

julienbj 458 Messages postés jeudi 4 décembre 2003Date d'inscription 19 décembre 2008 Dernière intervention - 23 janv. 2005 à 00:55 - Dernière réponse : julienbj 458 Messages postés jeudi 4 décembre 2003Date d'inscription 19 décembre 2008 Dernière intervention
- 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
garslouche 585 Messages postés mardi 26 novembre 2002Date d'inscription 29 mai 2015 Dernière intervention - 23 janv. 2005 à 11:27
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

Merci garslouche 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de garslouche
julienbj 458 Messages postés jeudi 4 décembre 2003Date d'inscription 19 décembre 2008 Dernière intervention - 23 janv. 2005 à 13:01
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.