【发布时间】:2008-11-07 17:10:09
【问题描述】:
我有一个出现在系统托盘中的 NotifyIcon 控件。如何在屏幕上找到图标的位置 (x, y)?
谢谢
【问题讨论】:
标签: c# winforms visual-studio-2008 notifyicon
我有一个出现在系统托盘中的 NotifyIcon 控件。如何在屏幕上找到图标的位置 (x, y)?
谢谢
【问题讨论】:
标签: c# winforms visual-studio-2008 notifyicon
实际上你可以做到这一点,这里的代码向你展示了如何以及更多。
在来自 NotifyIcon 的任何鼠标事件中,只需查看 Control.MousePosition,它包含鼠标的 (x,y)。可以使用这些 (x,y) 值将 ContextMenu 准确定位在表单/控件上单击表单/控件的位置。
这里有一个很好的例子:
【讨论】:
经过漫长的试错之旅,以及我自己的通知图标定位器的开发,我开发了一种找到最佳位置图标的方法,到目前为止一切顺利,直到我看到@zhwang SuperNotifyIcon这个惊人的项目.本项目提供了三种定位通知图标的方式,从不准确的(像我自己开发的)到使用Windows 7中的new API。这是确定的答案。
【讨论】:
你不能。获取系统托盘的窗口句柄并不难,GetClassName()返回“ToolbarWindow32”,标准TOOLBAR公共控件的类名。请注意,64 位操作系统有两个。然后你可以像 TB_GETBUTTONINFO 一样向它发送消息。主要问题是您不知道选择哪个按钮 ID,并且返回的信息不包括按钮位置。
更好的是,按钮在你无法锁定的情况下移动。
【讨论】: