【发布时间】:2013-01-10 03:24:53
【问题描述】:
我需要弄清楚如何以编程方式从单独的应用程序的系统托盘图标中查找和选择上下文菜单项。我能想到的唯一方法是使用 mouse_event() 和一些硬编码的 x/y 值,并将图标设置为始终显示。除了一般硬编码的骇人听闻的使用之外,这里的问题是假设图标将保留它的位置(这可能会在另一个应用程序加载/卸载时中断)。我想知道是否有人知道其他方法可以解决这个问题?
【问题讨论】:
-
使用 UI 自动化。通知图标是通知区域的可访问子项。
-
这是 .NET 框架的标准部分吗?我似乎在对象浏览器中找不到任何合适的命名空间,而且它似乎没有在线记录。
-
使用 UIA 的问题是你必须非常了解实际的 UI 布局 - 例如,如果一个图标是隐藏的,你需要知道找到并单击“显示隐藏图标”链接首先访问它。此外,UI 的结构在 Windows 版本之间总是会发生变化,因此它可能很脆弱。但这可能是任何解决上述 qu 的问题。使用 UIA 仍然远没有硬编码位置那么脆弱!
标签: windows winapi click contextmenu system-tray