如何在系统托盘中找到图标的位置

时间:2008-11-07 17:10:09

标签: c# winforms visual-studio-2008 notifyicon

我有一个出现在系统托盘中的NotifyIcon控件。如何在屏幕上找到图标的位置(x,y)?

由于

3 个答案:

答案 0 :(得分:4)

实际上你可以这样做,这里的代码可以向你展示如何以及更多。

在NotifyIcon的任何鼠标事件中,只需查看Control.MousePosition,它包含鼠标的(x,y)。可以使用这些(x,y)值将表单/控件上的ContextMenu精确定位到表单/控件的位置。

这两个方面的一个很好的例子是:

更多信息:http://code.msdn.microsoft.com/TheNotifyIconExample

答案 1 :(得分:2)

经过漫长的试验和错误之旅,以及我自己的通知图标定位器的开发,我开发了一种找到最佳位置图标的方法,到目前为止一直很好,直到我看到@zhwang {{3 }}。该项目有三种方法可以找到通知图标,范围从不准确(如我自己的开发)到在Windows 7 API中使用new。这是明确的答案。

答案 2 :(得分:1)

你做不到。获取系统托盘的窗口句柄并不困难,GetClassName()返回“ToolbarWindow32”,即标准TOOLBAR公共控件的类名。请注意,64位操作系统有两个。然后你可以像TB_GETBUTTONINFO一样向它发送消息。首席警告是您不知道选择哪个按钮ID,并且返回的信息不包括按钮位置。

哪个更好,按钮移动而不能锁定它们。