質問

システムトレイに表示されるNotifyIconコントロールがあります。画面上のアイコンの場所(x、y)を見つけるにはどうすればよいですか?

ありがとう

役に立ちましたか?

解決

できません。システムトレイのウィンドウハンドルを取得するのは難しくありません。GetClassName()は、標準のTOOLBAR共通コントロールのクラス名である" ToolbarWindow32"を返します。 64ビットOSには2つあることに注意してください。その後、TB_GETBUTTONINFOのようにメッセージを送信できます。主な問題は、選択するボタンIDがわからず、返される情報にボタンの位置が含まれていないことです。

良いのは、ボタンをロックすることなく移動できることです。

他のヒント

実際にこれを行うことができます。以下に、その方法などを示すコードを示します。

NotifyIconの任意のマウスイベントで、Control.MousePositionを見るだけで、マウスの(x、y)が含まれます。これらの(x、y)値を使用してフォーム/コントロールがクリックされた正確な場所に、フォーム/コントロールにContextMenuを配置するために同じことができます。

これらの両方の良い例はこちらです:

詳細: http://code.msdn.microsoft.com/TheNotifyIconExample

試行錯誤の長い旅と、独自の通知アイコンロケーターの開発の後、これまでのところ最高の位置アイコンを見つける方法を開発しました。@ zhwang SuperNotifyIcon 。このプロジェクトには、不正確な(私自身の開発のような)からWindows 7 APIの新しい使用まで、通知アイコンを見つける3つの方法があります。これが決定的な答えです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top