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

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

谢谢

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

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

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

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

两者的一个很好的例子是:

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

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