Windows: icônes, tray et plantage de l'explorer

Windows: icônes, tray et plantage de l'explorer - Divers - Programmation

Marsh Posté le 20-10-2003 à 13:51:38    

J'ai une petite question qui me trotte dans la tête depuis un moment, ne parvenant pas à trouver de réponse je vous la soumet:
 
Quand une appli met une icône en "tray" et que l'explorer plante et redémarre y a plus d'icône. Cependant, certaines appli arrivent à re mettre la dite icône. La question est comment font elles? Le ssytème envoie-t-il un message particulier lorqu'il redémarre l'explorer? Est ce que tout simplement ces appli testent periodiquement la présence de leur icône? Quelqu'un a-t-il une réponse?


---------------
Le Tyran
Reply

Marsh Posté le 20-10-2003 à 13:51:38   

Reply

Marsh Posté le 20-10-2003 à 13:52:45    

tiens c marrant je me posais la meme question y'a pas longtemps (par contre j'ai fait aucune recherche donc on va dire que c un blue flag deguisé)

Reply

Marsh Posté le 20-10-2003 à 13:54:24    

Je pense que c'est l'application qui remet son (ou ses) icône. Par exemple TrayIt a une commande "Refresh Tray Icons" pour reconstruire ses icônes si jamais elles n'apparaissent plus.

Reply

Marsh Posté le 20-10-2003 à 13:55:32    

chrisbk a écrit :

tiens c marrant je me posais la meme question y'a pas longtemps (par contre j'ai fait aucune recherche donc on va dire que c un blue flag deguisé)


 
Moi ça fait un an que je cherche périodiquement, j'ai fais choux blanc pour l'instant  [:spamafote]


---------------
Le Tyran
Reply

Marsh Posté le 20-10-2003 à 14:02:44    

[:blueflag]

Reply

Marsh Posté le 20-10-2003 à 14:05:56    

ben si ton appli regarde periodiquement si la tache explorer est en cours de traitement, elle peut p-e traiter le cas ou elle disparait et relancer la manip de mise en tray ??? (juste une idée comme ca patapè)

Reply

Marsh Posté le 20-10-2003 à 14:07:41    

Joel F a écrit :

ben si ton appli regarde periodiquement si la tache explorer est en cours de traitement, elle peut p-e traiter le cas ou elle disparait et relancer la manip de mise en tray ??? (juste une idée comme ca patapè)


 
J'ai déjà pensé à l'openprocess et au waitforsingleobject, mais j'ai jamais testé  [:ddr555]


---------------
Le Tyran
Reply

Marsh Posté le 20-10-2003 à 14:09:13    

^^ gros feignant de binome :o

Reply

Marsh Posté le 27-10-2003 à 10:57:38    

J'ai enfin trouvé, en fouillant dans el code de miranda et dans la msdn:
 
http://msdn.microsoft.com/library/ [...] askbar.asp
 

Citation :

With Internet Explorer 4.0 and later, the Shell notifies applications that the taskbar has been created. When the taskbar is created, it registers a message with the TaskbarCreated string and then broadcasts this message to all top-level windows. When your taskbar application receives this message, it should assume that any taskbar icons it added have been removed and add them again. This feature generally applies only to services that are already running when the Shell begins execution. The following example shows a very simplified method for handling this case.
 


---------------
Le Tyran
Reply

Marsh Posté le 27-10-2003 à 11:11:23    

Pour aller droit au but
 
 

Code :
  1. LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam,
  2.                          LPARAM lParam)
  3. {
  4.     static UINT s_uTaskbarRestart;
  5.     switch(uMessage)
  6.     {
  7.         case WM_CREATE:
  8.             s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated" ));
  9.             break;
  10.        
  11.         default:
  12.             if(uMessage == s_uTaskbarRestart)
  13.                 AddTaskbarIcons();
  14.             break;
  15.     }
  16.     return DefWindowProc(hWnd, uMessage, wParam, lParam);
  17. }


 

Reply

Marsh Posté le 27-10-2003 à 11:11:23   

Reply

Marsh Posté le 27-10-2003 à 14:11:08    

et

Code :
  1. case s_uTaskbarRestart:

ca irait pas ?

Reply

Marsh Posté le 27-10-2003 à 14:15:56    

R3g a écrit :

et

Code :
  1. case s_uTaskbarRestart:

ca irait pas ?


 
Nope les valeurs des cases dans un switch doivent etre connu en compile time

Reply

Marsh Posté le 27-10-2003 à 14:16:50    

ah oui tiens :/ petite sieste alors...

Reply

Marsh Posté le 27-10-2003 à 14:19:36    

On peut faire des case sur des valeurs non constantes ? :??:
 
edit: grilled de 4 minutes [:tinostar]


Message édité par antp le 27-10-2003 à 14:19:55
Reply

Marsh Posté le 27-10-2003 à 14:30:21    

Ça le rend connu à la compilation ? :??:

Reply

Marsh Posté le 27-10-2003 à 14:31:42    

antp a écrit :

Ça le rend connu à la compilation ? :??:


 
Ha ben non, finalement ça passe pas, désolé :D


Message édité par LetoII le 27-10-2003 à 14:32:47

---------------
Le Tyran
Reply

Marsh Posté le 27-10-2003 à 14:32:53    

Si jamais il a la même valeur qu'un autre élément du switch, il se passe quoi ?
 
edit: ouais j'aurais dû quoter ta bêtise :o


Message édité par antp le 27-10-2003 à 14:33:11
Reply

Marsh Posté le 27-10-2003 à 14:34:52    

antp a écrit :

Si jamais il a la même valeur qu'un autre élément du switch, il se passe quoi ?
 
edit: ouais j'aurais dû quoter ta bêtise :o


 
Comem un cons j'ai testé avec

Code :
  1. static const int i = 3;


Là forcément ça marche  [:ddr555]
 
Ha et puis il ne peut pas être égalle à un autre case du switch dans notre cas, tu est assuré que ton message est unique lorsque tu utilise RegisterWindowMessage, or comme on test que des valeurs de messages...


Message édité par LetoII le 27-10-2003 à 14:36:20

---------------
Le Tyran
Reply

Marsh Posté le 27-10-2003 à 14:41:18    

Ouais enfin le compilo il va pas aller vérifier que la valeur de ta variable provient d'une fonction qui renvoie une valeur unique... Les compilateurs C++ sont assez lents comme ça, heureusement qu'ils ne doivent pas faire ce genre de tests en plus :o

Reply

Marsh Posté le 27-10-2003 à 14:49:37    

antp a écrit :

Ouais enfin le compilo il va pas aller vérifier que la valeur de ta variable provient d'une fonction qui renvoie une valeur unique... Les compilateurs C++ sont assez lents comme ça, heureusement qu'ils ne doivent pas faire ce genre de tests en plus :o


 
heuh niveau rapidité les compilos C++ digne de ce nom (ceux qui ont des PCH quoi [:joce]) se demerde plutot pas mal  

Reply

Marsh Posté le 27-10-2003 à 14:50:44    

chrisbk a écrit :


heuh niveau rapidité les compilos C++ digne de ce nom (ceux qui ont des PCH quoi [:joce]) se demerde plutot pas mal  


 
Faut dire que comme point de comparaison je prends Delphi... et même avec PCH ils sont plus lents que Delphi (qui lui n'a pas de PCH :D)

Reply

Marsh Posté le 27-10-2003 à 14:57:12    

antp a écrit :


 
Faut dire que comme point de comparaison je prends Delphi... et même avec PCH ils sont plus lents que Delphi (qui lui n'a pas de PCH :D)


 
C'est tres relatif, fo vraiment voir comment l'appli est construite. Si t'as des #includes dans tous les sens (alors qu'une fine forward declaration ferait aussi bien l'affaire), une utilisation foireuse des PCH, alors ouais ca va ramer a mort...la aussi y'a de l'apprentissge a faire un truc propre


Message édité par chrisbk le 27-10-2003 à 15:00:47
Reply

Marsh Posté le 27-10-2003 à 14:59:22    

rajoute à ca une utilisation abusive des templates et tadam : 30mn de compilation pour une convolution 3x3  :sol:

Reply

Marsh Posté le 27-10-2003 à 15:00:08    

Joel F a écrit :

rajoute à ca une utilisation abusive des templates et tadam : 30mn de compilation pour une convolution 3x3  :sol:


 
tiens delphi a des templates au fait :??:
Si vi, c'est aussi bricolage-friendly que les C++ ?

Reply

Marsh Posté le 27-10-2003 à 15:14:02    

Pour revenir un peu sur le sujet:
 
Pour ceux que ça intéresse, vu que le message précédament sité n'est envoyé que par les version d'IE superieur à la 4.0, pour vérifier cette version:
 
http://msdn.microsoft.com/library/ [...] ensing.asp
 
Et une interface com:
http://msdn.microsoft.com/library/ [...] s/tips.asp Mais bon vu qu'elle nécessite ie 4.0 spas très utile pour le cas qui nous intéresse :D


Message édité par LetoII le 27-10-2003 à 15:16:04

---------------
Le Tyran
Reply

Marsh Posté le 27-10-2003 à 15:41:51    

chrisbk a écrit :


 
tiens delphi a des templates au fait :??:
 


 
non, parfois ça manque
 
y a pas non plus de préprocesseur (juste des ifdef mais pas moyen de faire un #define cachant tout un bloc de code par ex)
 
enfin, ça plus le fait que la syntaxe soit plus stricte, c'est normal que ça compile beaucoup plus vite.

Reply

Marsh Posté le 27-10-2003 à 20:47:59    

Bon j'ai testé, ça marche nickel :sol:


---------------
Le Tyran
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed