我有一个 ComboBox 包含一个列表(这是组合框的标准),它有很多元素 - 超过 100 个。我想找到某些条目来选择它们。为了找到条目,我将给定的模式与每个元素的名称进行比较。
出于性能原因(超过 100 个元素),我在父级上使用了 CacheRequest,其范围为所有子级,因此我可以非常快速地遍历所有子级并找到我想要选择的子级的正确索引。
问题来了:我有我想要的正确索引,我也有缓存的 AutomationElement,但是由于我在 CacheRequest 中指定了 AutomationElementMode.None(我仍然需要测试它是否会对性能产生影响),我似乎不是能够将缓存的元素转换为可用于将来调用的元素(“实时”元素)。
我尝试通过NativeWindowHandle进行转换(因为有一个函数AutomationElement.FromWindowHandle),但是句柄似乎为0,所以这是没有办法的。
我还没有尝试使用缓存的 SelectionPattern - 因为 ComboBoxes 有时是定制的,我不知道这是否适用于所有情况(如果有的话)。
我有子索引,我可以获得所有可以缓存的值 - 如何获得缓存元素的工作/实时 AutomationElement?
谢谢安德烈亚斯
(在带有 win32 应用程序(作为自动化目标)的 Windows 7 64 上使用 C#,尽管这不会有太大的区别)