首页 > 解决方案 > 使用 UIAutomation 检索工具条按钮

问题描述

在 Windows 窗体上使用 UIAutomation,我试图在特定窗体上检索鼠标下的任何控件。目标是处理应用程序的控件,检索并对其进行操作。

很多次以来我面临的问题是我找不到工具条按钮。每次我得到一个窗格时(不是我想要的工具条按钮的父级或子级,而是父级的兄弟姐妹)。

这是我要检索的工具条按钮:截图 1

相同的控件,但在 Inspect.exe 中(突出显示:我得到的控件):截图 2

我虽然这是因为控件的 z 顺序,然后我尝试使用同级控件,用于它们的边界包含鼠标的控件(无论如何都将所有控件放在光标下的 z 顺序)。失败是因为未检索到工具条按钮。

我目前使用 UIAutomation 而不是 CodedUI,因为我需要运行一个自定义程序来检索控件并在特定服务器上执行自动测试,但我实际上在我的机器上安装了 Visual Studio Enterprise 2017 许可证,但是第二个许可证(用于服务器)和一个同事与我一起工作的第三个许可证会有点贵。

记住程序必须动态检索鼠标下的控件,有人可以给我任何可以帮助我深入调查的想法吗?

谢谢和问候

使用方法:

var aimed = AutomationElement.FromPoint(new System.Windows.Point(Cursor.Position.X, Cursor.Position.Y));

标签: c#microsoft-ui-automation

解决方案


通过变通解决

我做了一个递归方法,可以在子项中更深入地搜索包含鼠标的控件(BoundingRectangle.Contains 方法)。这样,我可以在工具条中找到控件。

但是AutomationElement.FromPoint方法不会在工具条内搜索。


推荐阅读