我真的想知道,Inspect.exe如何获取它的UI元素,因为它获得的元素比UISpy要多得多(两者都在Microsoft Windows SDK 7中可用)
1)我认为UISpy通过UIAutomation库获取它的元素,对吧? (尝试使用UIAutomation并获得完全相同的元素,显示UISpy)
2)Inspect.exe使用哪个库? 因为它显示了一些带有MacromediaFlashPlayerActiveX的应用程序的UI元素,我需要在自己的UI-Automation-Application中获取,希望有人知道它。
编辑:Inspect也有一个" UI Automation"模式,它还使用UIAutomation库吗?关于它的奇怪之处在于,在Inspect中它还显示了比UISpy更多的元素。
提前谢谢
答案 0 :(得分:16)
UISpy
是一个 .NET 程序,它使用.NET的UIAutomation程序集。这些程序集随.NET Framework 2一起引入。
Inspect
是 native 程序,它使用UIAutomationCore.dll(在系统目录中可用)。 UIAutomationCore是一个实现UI Automation Windows API的 native COM Windows DLL。此API已使用Windows升级,例如,此处是Windows 8+改进的链接:What's New in UI Automation?
.NET的UIAutomation程序集在内部使用UIAutomationCore.dll。但是,Microsoft从未将它们升级到本机UI Automation API的新功能。因此,如果使用原始的.NET的UIAutomation,很多属性(例如所有非常有用的ARIA属性),模式,事件等都会丢失。
但是,.NET世界仍有希望,因为这里有一个项目:https://uiacomwrapper.codeplex.com/这是一个与源代码兼容的新版本的.NET UIAutomation(事实上它是由微软人写的,我不明白他们为什么不以更官方的方式发布这个并升级.NET的UIAutomation ......)。它定义了大多数新的Windows 8属性,模式和接口。