我真的很想知道Inspect.exe是如何获取UI元素的,因为它获取的元素远远超过UISpy(Microsoft Windows SDK 7中都提供)。
1)我认为UISpy通过UIAutomation库获取了它的元素,对不对?
(使用UIAutomation对其进行了尝试,并获得了与UISpy显示的元素完全相同的元素)。
2)Inspect.exe使用哪个库?
因为它显示了例如带有MacromediaFlashPlayerActiveX的应用程序的某些UI元素,我需要将其放入自己的UI-Automation-Application中,所以希望有人对此有所了解。
编辑:检查也有一个“ UI自动化”模式,它也使用UIAutomation库吗?奇怪的是,在Inspect中,它还显示了比UISpy更多的元素。
最佳答案
UISpy
是一个使用.NET的UIAutomation程序集的.NET程序。这些程序集是随.NET Framework 2引入的。Inspect
是使用UIAutomationCore.dll(在System目录中可用)的本机程序。 UIAutomationCore是实现UI Automation Windows API的本机COM Windows DLL。此API已随Windows升级,例如,以下是Windows 8+改进的链接:What's New in UI Automation?
.NET的UIAutomation程序集在内部使用UIAutomationCore.dll。但是,Microsoft从未将它们升级为本机UI自动化API的新功能。因此,如果使用原始.NET的UIAutomation,则会丢失许多属性(例如,非常有用的所有ARIA属性),模式,事件等。
但是,.NET领域仍然充满希望,因为这里有一个项目:https://uiacomwrapper.codeplex.com/是与源兼容的.NET UIAutomation的较新版本(实际上是由Microsoft编写的,我不明白。为什么他们不以更正式的方式发布此文档并升级.NET的UIAutomation ...)。它定义了大多数新的Windows 8属性,模式和界面。