0

我越来越接近解决这个问题并主要发布以分享我的结果。

我所看到的是对 User32.FindWindow 的几次调用(在同一个窗口上)将搞砸对 UI 自动化核心方法的调用,例如 FindAllBuildCache()。

有谁知道是否有适当的方法来处理从 PInvoke FindWindow 调用中返回的句柄?

4

1 回答 1

0

布伦丹麦克利斯,

感谢您指出了这一点。这是很好的信息。

现在我 99% 确定我遇到的问题是由于同时使用 UIAutomationCore 和 AutomationClient。我使用的核心是通过 tlbimp 构建步骤从核心 DLL 创建托管程序集。我使用 Core 获得了更好的性能,并且还获得了一个名为 IUIAutomationLegacyIAccessiblePattern 的模式,它使我能够从 Infragistics Ultragrid 中获取单元格内容。我昨天注意到,即使我不使用 AutomationClient,我的测试在加载程序集后就开始遇到问题:

当我使用 AutomationClient 导入创建类的实例时,我在输出窗口中看到了这一点:

Loaded UIAutomationClientsideProviders.dll
Loaded Accessibility.dll

问题可能是 Accessibility.dll,因为我使用的是 IUIAutomationLegacyIAccessiblePattern,但无论如何,该 DLL 都作为 UIAutomationClientsideProviders.dll 的依赖项加载,所以......

如果解决方案不正确,我会更新我的帖子(在我能 100% 确定之前,我有大量的返工要做)。


稍后添加:

问题肯定是使用 UI 自动化核心以及托管客户端 UI 自动化的东西。多么痛苦!

于 2012-06-01T14:31:03.480 回答