Tooltip en icono la barra de tareas (y casi conseguido)

12/10/2004 - 21:01 por Zephryn Xirdal | Informe spam
Hola otra vez.

Ya casi tengo conseguido lo de mostrar/ocultar el icono en la barra de
tareas a través de una DLL hecha en C con el API nativo del Win32.

El problema viene ahora de que es imposible comunicar a la aplicación los
mensajes WM_USER que me genera windows a la aplicación.

Añadir un filtro de mensajes con Application.AddMessageFilter no funciona,
porque captura algunos mensajes pero en concreto los WM_USER, no, y no es
cuestión de enviarle otro mensaje y procesarlo yo.

¿Solución?

Añadir un hook a nivel de API a la ventana principal y capturar el mensaje
de WM_USER y si tiene los parámetros concretos, enviarle a la aplicación un
mensaje que la despierte de su estado "oculto":

LRESULT CALLBACK m_wndProcFilter(int nCode,WPARAM wParam,LPARAM lParam)

{

if (nCode < 0) // do not process message

return 0;

CWPSTRUCT *p=(CWPSTRUCT *)lParam;

if(p->message==WM_MYNOTIFYICON && p->hwnd==m_hwnd &&
p->lParam==WM_LBUTTONDOWN)

{

PostMessage(m_hwnd,WM_SHOWWINDOW,TRUE,0);

return 1;

}

return 0;

}

El problema es que no sé qué mensaje enviar para que pase de No Visible a
Visible, que pienso sería lo correcto (porque el cambiar la propiedad
Visible de true a false y viceversa debe generar una secuenca de mensajes).
He probado unos cuantos, pero ninguno la despierta...

Me queda enviar un WM_CHAR con la tecla más extraña que se me ocurra y
capturar ese mensaje, cosa que me parece un verdadera barbaridad, teniendo
en cuenta que la DLL y el EXE están en el mismo espacio de direcciones, lo
comparten todo, pero son incapaces de comunicarse entre sí...

También me queda la opción de la ingeniería inversa (completamente legal en
este caso), pero no tengo ganas...

¿Dónde está documentado todo lo que falta del .NET? Porque 1.821.342.490
bytes de texto comprimido dan para mucho...

La verdad es que estoy bastante cansado ya del tema, y me parece que voy a
abandonar por lo menos el C# y el .NET

Saludos a todos, si a alguien se le ocurre algo, pues le agradecería que me
lo dijera, pero pienso que no vale la pena tanto lío para un programa chorra
que lo único que intenta utilizar en una ínfima parte de lo que la
programación windows puede ofrecer...
El mundo no fue hecho en el tiempo, sino con el tiempo.
Powered by zxFortune http://sourceforge.net/projects/zxfortune

Preguntas similare

Leer las respuestas

#6 Zephryn Xirdal
13/10/2004 - 11:32 | Informe spam
http://sourceforge.net/projects/zxfortune


Esta noce subo el programa en beta 0.97 (sólo falta añadirle el acceso
programador de tareas). La versión que hay ahora no tiene lo de la ventana
del "Balloon Tooltip" (y casca miserablemente debido a un posible bug del
NET).

Aprender de ayer, vivir para hoy, soñar para mañana.

escribió en el mensaje
news:02fd01c4b0f3$1427ca30$
podría realizar aportación de código ?


muchas veces la solución que "funciona" puede que no sea


la mejor (o más
otodoxa), pero... mientras haga lo que debe hacer...


pues eso... al que no le
guste, que no mire... o lo haga de otra forma... ;-)))

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Zephryn Xirdal"


wrote in message
news:
Pues ya está solucionado, gracias a Guillermo por su




ayuda indirecta ("¿por
qué no usas lo que el .NET te
ofrece para trabajar con los iconos de la barra de




tareas?"), y es que uno a
veces se obceca de una manera que vamos.

Pues me he creado una ventana TopMost,




FixedToolWindow, pequeñita, con unos
colores un tanto "sui-generis" con un edit y un timer.




La abro a mano y al
hacer click en cualquier lugar de ella o cuando se




termine el timer se cierra
y ya está. A quien no le guste que no mire.

No es bueno que todo suceda como deseamos.




francés.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida