我有一个组合框包含一个列表(这是一个组合框的标准),有很多元素 - 超过100个。我想找到某些条目来选择他们。要找到条目,我将给定的模式与每个元素的名称进行比较。因为性能方面的原因(超过100个元素),我在父亲上使用了一个CacheRequest,它包含所有孩子的范围,所以我可以很好地并且非常快速地通过所有孩子并找到孩子的正确索引。想要选择。我有我想要的正确索引,我也有缓存的AutomationElement,但由于我在CacheRequest中指定了AutomationElementMode.None(我仍然必须测试它是否会对性能产生影响),我似乎无法将缓存的元素转换为我可以用于未来调用的元素(“实时”元素)。AutomationElement:缓存元素(通过GetCachedChildren)为“活”元素
我试着通过NativeWindowHandle(因为有一个函数AutomationElement.FromWindowHandle)转换,但句柄似乎是0,所以这是没有办法。
我也没有尝试过使用缓存的SelectionPattern,但由于ComboBox有时是定制的,我不知道它是否可以在所有情况下都能正常工作(如果有的话)。
我有孩子索引,我可以得到所有我可以缓存的值 - 我怎样才能获得缓存元素的工作/实时AutomationElement?
感谢 安德烈亚斯
(使用C#在Windows 7 64 Win32应用程序(如自动化目标),但不应该有很大的不同)
感谢您的回答!你如何获得这种联系?是否将UIAtuomation转换为实现该接口的对象? – 2012-08-09 08:38:16
是的,但只使用非托管API,这在我看来更好。在这里阅读更多:http://social.msdn.microsoft.com/Forums/en-US/windowsaccessibilityandautomation/thread/c3f142e1-0624-4ec5-a313-482e72d5454d(据我可以告诉IUIAutomationLegacyIAccessiblePattern不是管理的一部分码)。让我知道,如果你想给非托管的尝试,我可以添加到我的答案。 – chrismead 2012-08-09 15:08:51