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

时间:2012-05-30 18:03:51

标签: c# pinvoke ui-automation

我越来越接近想出这个并主要发布以分享我的结果。

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

有没有人知道是否有正确的方法来处理你从PInvoke FindWindow调用中获得的句柄?

1 个答案:

答案 0 :(得分:0)

BrendanMcKless,

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

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

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

Loaded UIAutomationClientsideProviders.dll
Loaded Accessibility.dll

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

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


稍后添加:

问题肯定是使用UI Automation Core以及托管客户端UI自动化的东西。太痛苦了!