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? :)

¿Fue útil?

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.

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