2011-09-16 31 views
1

如何獲得在C#中窗口任務欄的狀態區域(a.k.a.系統托盤)中找到的應用程序圖標的座標?SystemTray圖標座標 - C#

+1

爲什麼你需要這個? – ykatchou

+0

這是一個「通知圖標」,以方便您的搜索。 –

+0

從NotifyIcon獲取鼠標事件是一個肯定的信號,表示用戶非常接近該圖標。圖標中心距離Cursor.Position +/- 8像素,足夠接近任何類似上下文菜單的內容。 –

回答

1

你不能以公平的方式做到這一點。沒有這樣的API存在。當然,有各種各樣的黑客方法可以找到它,但我不會涉足這一點。

通常情況下,您要做的是顯示一個菜單,以響應托盤圖標的點擊。當發生這種情況時,Windows向您發送的消息包含發生點擊的光標座標。這通常是足夠的信息來顯示您爲響應點擊而顯示的內容。

在C#中,這意味着讀取MouseEventArgs中的座標NotifyIcon.MouseUp

+0

是我還是'各種hacky的方式'是模糊的方式? –

+0

@Felipe我不想提倡這種邪惡的活動。 –

+0

@David Heffernan - 首先,感謝您的有趣。是否可以使用Shell_WotifyWindow或NotifyWindowData方法執行此操作? – Selo