SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: diego.martinez en Lunes 14 de Diciembre de 2009, 18:26

Título: perdida del Icono del System Tray al reiniciar el explorer
Publicado por: diego.martinez en Lunes 14 de Diciembre de 2009, 18:26
Buenas:

Nuevamente, el fantasma del shellnotifyicon me persigue.

En este caso el problema que tengo es que si se reinicia el explorer.exe del windows pierdo el icono de la aplicación.

Alguien sabe como puedo:

detectar el reinicio del explorer para volverlo a poner / hacer que el icono sobreviva al explorer?

gracias
Título: Re: perdida del Icono del System Tray al reiniciar el explorer
Publicado por: diego.martinez en Martes 15 de Diciembre de 2009, 16:24
encontre la solución:

cuando se reinicia el explorer envia un broadcast "TaskbarCreated" a todas las ventanas del tray, asi que puedo capturarlo para reiniciar el tray:

en el codigo de la ventana que recibe los mensajes del icono
Código: C++
  1.  
  2. static UINT s_uTaskbarRestart;
  3.  
  4.         switch(m)
  5.         {
  6.               case WM_CREATE:
  7.                      s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
  8.                      return 0;
  9.  
  10.               default:
  11.                      if(m == s_uTaskbarRestart)
  12.                      {                      
  13.                          ((w32Tray*)T)->Data.cbSize=0;
  14.                          T->Update();
  15.                      }
  16.                      else
  17.                      {
  18.                          HWND ag=FindWindowEx(0,0,"myWindow","mywindow");
  19.                          if (ag!=NULL)
  20.                              SendMessage(ag,m,wp,lp);
  21.  
  22.                      }
  23.             break;
  24.         }
  25.  
  26.