使用 UIAutomation 获取按钮的路径

Getting the path of a button using UIAutomation

我正在尝试获取另一个应用程序唯一路径的按钮,因为我想保存它以便在我关闭另一个 运行 上的应用程序后再次访问它。我对保存路径的任何可能方法感兴趣,我可以按照该路径自动访问按钮。

我得到了如下代码中的按钮,但我不知道如何保存它的路径(如在日志中)以便再次访问它。

GetCursorPos(&cursorPos);
CComPtr<IUIAutomationElement> elFromPoint;
_automation->ElementFromPoint(cursorPos, &elFromPoint);

UI 自动化中的控件没有绝对的 "path"。您可以从元素开始遍历自动化树,直到到达桌面,如下所示:How to walk automation tree,并在遍历树时创建到元素的路径。您可以使用此存储的 "path" 通过从桌面向下遍历树或使用 UI Automation 提供的搜索机制来搜索您的元素的特定属性来查找您的元素。请记住,某些控件可能无法确定地识别,因为没有单个 属性 作为控件的 ID(AutomationId 取决于提供程序的实现),在这种情况下,您需要在两者之间实现匹配功能您存储的元素属性和您找到的实际元素。