C# アプリケーションを介して、別のアプリケーションによって作成された NotifyIcon を表示、非表示、または変更できるかどうかを常に知りたいと思っていました。
誰かがこれを行う方法の例を投稿してもらえますか? :)
C# アプリケーションを介して、別のアプリケーションによって作成された NotifyIcon を表示、非表示、または変更できるかどうかを常に知りたいと思っていました。
誰かがこれを行う方法の例を投稿してもらえますか? :)
システム トレイのアイコンを変更するには、Shell_NotifyIcon Win32 API ( P/Invoke 宣言) を使用できます。アイコンは、ウィンドウ ハンドルと ID に関連付けられています。つまり、別のプログラムのアイコンを変更または非表示にするには、そのアプリケーションがそれを登録するために使用するウィンドウと ID を知る必要があります。たとえば、そのプロセスのすべてのウィンドウを列挙し、各ハンドルと 0 から 5000 千の間の各番号で呼び出しを行うことで、ブルート フォースを実行できる可能性がありますが、成功する可能性は非常に低くなります。
SystemTray ウィンドウ自体をフックして、すべての Shell_NotifyIcon() リクエストを傍受できます。次に、各アイコンに登録されている正確な HWND と ID がわかります。詳細は、任意の検索エンジンで見つけることができます。
他のアプリケーションがパブリックメソッドを公開するか、リフレクションを使用しようとしない限り、私は何も知りませんが、実行中のプロセスでそれを実行できるかどうかさえわかりません。