julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 décembre 2008
-
23 janv. 2005 à 00:55
julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 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]
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 23 janv. 2005 à 11:27
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
julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 décembre 200815 23 janv. 2005 à 13:01
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]