UIAutomation(核心)受到多个User32.FindWindow调用的负面影响
本文关键字:调用 FindWindow 影响 User32 核心 UIAutomation | 更新日期: 2023-09-27 18:35:42
我越来越接近弄清楚这一点,主要是为了分享我的结果。
我所看到的是,对User32.FindWindow(在同一窗口上)的几次调用将搞砸对UI Automation核心方法(如FindAllBuildCache())的调用。
有谁知道是否有正确的方法来处理从 PInvoke 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 自动化内容。 好痛啊!