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

Ang*_*ker 5 c# notifyicon visual-studio-2008 winforms

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

谢谢

小智 5

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

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

这两个的一个很好的例子在这里:

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


Han*_*ant 1

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

更好的是,按钮可以四处移动,而您无法锁定它们。

  • https://github.com/rzhw/SuperNotifyIcon 显然是这样做的。我知道它在回答这个问题时可能没有曝光 - 但它通过本机调用完成了任务,就像你说的不可能 - 这适用于旧版本的 Windows。它还可以通过新的 Windows 7 API 来完成此操作。“我认为你做不到”比“你做不到”更好——这有点太过了。 (4认同)