Modifica il comportamento di NotifyIcon con tramite un'applicazione di terze parti
-
05-07-2019 - |
Domanda
Sono sempre stato curioso di vedere se posso mostrare, nascondere o modificare un NotifyIcon creato da un'altra applicazione tramite un'applicazione C #.
Qualcuno potrebbe pubblicare un esempio su come farlo? :)
Soluzione
Per modificare le icone nel systray, puoi usare Shell_NotifyIcon API Win32 ( Dichiarazione P / Invoke ). Le icone sono associate a una maniglia di finestra e un ID. Ciò significa che per modificare o nascondere l'icona di un altro programma, è necessario conoscere la finestra e l'id utilizzati da tale applicazione per registrarlo. Potresti essere in grado di forzarlo forzatamente enumerando tutte le finestre per quel processo ed effettuando chiamate con ogni handle e ogni numero tra 0 e 5000 migliaia, ad esempio, ma le tue possibilità di successo sono molto ridotte.
Altri suggerimenti
Puoi agganciare la finestra SystemTray stessa per intercettare tutte le richieste Shell_NotifyIcon (). Quindi conoscerai gli HWND e gli ID esatti registrati per ciascuna icona. I dettagli possono essere trovati tramite qualsiasi motore di ricerca.
Non sono a conoscenza di nulla, a meno che quell'altra applicazione non esponga un metodo pubblico o non provi a usare la riflessione, ma non sono nemmeno sicuro che puoi farlo su un processo in esecuzione.