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