Modificar el comportamiento de un NotifyIcon con una aplicación de terceros
-
05-07-2019 - |
Pregunta
Siempre he tenido curiosidad por ver si puedo mostrar, ocultar o cambiar un NotifyIcon creado por otra aplicación a través de una aplicación C #.
¿Podría alguien publicar un ejemplo sobre cómo hacer esto? :)
Solución
Para modificar iconos en la bandeja del sistema, puede usar Shell_NotifyIcon Win32 API ( declaración de P / Invoke ). Los iconos están asociados con un identificador de ventana y una identificación. Eso significa que para modificar u ocultar el ícono de otro programa, debe conocer la ventana y la identificación utilizada por esa aplicación para registrarla. Podría forzar la fuerza bruta al enumerar todas las ventanas para ese proceso y hacer llamadas con cada identificador y cada número entre 0 y 5000 mil, por ejemplo, pero sus posibilidades de éxito son muy escasas.
Otros consejos
Puede conectar la ventana SystemTray para interceptar todas las solicitudes Shell_NotifyIcon (). Entonces sabrá los HWND e ID exactos que están registrados para cada icono. Los detalles se pueden encontrar a través de cualquier motor de búsqueda.
No tengo conocimiento de nada, a menos que la otra aplicación exponga algún método público, o intentes usar la reflexión, pero ni siquiera estoy seguro de que puedas hacerlo en un proceso en ejecución.