Pregunta

Tengo un control NotifyIcon que aparece en la bandeja del sistema. ¿Cómo puedo encontrar la ubicación (x, y) del icono en la pantalla?

Gracias

¿Fue útil?

Solución

No puedes. No es difícil obtener el identificador de ventana para la bandeja del sistema, GetClassName () devuelve " ToolbarWindow32 " ;, el nombre de clase del control común estándar TOOLBAR. Tenga en cuenta que un sistema operativo de 64 bits tiene dos de ellos. Luego puede enviarle mensajes como TB_GETBUTTONINFO. Los principales problemas son que no sabrá qué ID de botón elegir y la información devuelta no incluye la posición del botón.

Lo que es mejor, los botones se mueven sin que puedas bloquearlos.

Otros consejos

En realidad puedes hacer esto, aquí hay un código que te muestra cómo y mucho más.

En cualquier evento de mouse de NotifyIcon, simplemente mire Control.MousePosition, que contiene la (x, y) del mouse. Se puede hacer lo mismo para colocar un ContextMenu en un formulario / control exactamente donde se hizo clic en el formulario / control utilizando estos valores (x, y).

Un buen ejemplo de ambos está aquí:

Más aquí: http://code.msdn.microsoft.com/TheNotifyIconExample

Después de un largo viaje de prueba y error, y el desarrollo de mi propio localizador de íconos de notificación, desarrollé una forma de encontrar el mejor ícono de posición, hasta ahora tan bueno, hasta que vi este increíble proyecto de @zhwang SuperNotifyIcon . Este proyecto tiene tres formas de ubicar el ícono de notificación, desde impreciso (como mi propio desarrollo) hasta el uso de nuevo en la API de Windows 7. Esta es la respuesta definitiva.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top