UIAutomation(核心)受到多个User32.FindWindow调用的负面影响

本文关键字:调用 FindWindow 影响 User32 核心 UIAutomation | 更新日期: 2023-09-27 18:35:42

我越来越接近弄清楚这一点,主要是为了分享我的结果。

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

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

UIAutomation(核心)受到多个User32.FindWindow调用的负面影响

BrendanMcKless,

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

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

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

Loaded UIAutomationClientsideProviders.dll
Loaded Accessibility.dll

问题可能是可访问性.dll因为我正在使用 IUIAutomationLegacyIAccessiblePattern,但该 DLL 正在作为 UIAutomationClientsideProviders 的依赖项加载.dll无论如何......

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


稍后添加:

问题肯定是使用UI 自动化核心以及托管的客户端 UI 自动化内容。 好痛啊!