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