我真的很想知道,Inspect.exe是如何获得它的UI元素的,因为到目前为止,它比UISpy (两者都可以在Microsoft Windows SDK7中使用)获得更多的元素。
1)我认为UISpy通过UIAutomation库获得了它的元素,对吗?(在UIAutomation中尝试了一下,得到的元素与UISpy显示的元素完全相同)。
2) Inspect.exe使用哪个库?例如,因为它显示了带有MacromediaFlashPlayerActiveX的应用程序的一些UI元素,所以我需要在我自己的UI-自动化-应用程序中获取这些元素,希望有人对此有所了解。
编辑: Inspect也有一个"UI自动化“模式,它也使用UIAutomation库吗?奇怪的是,在检查中,它还显示了比UISpy多得多的元素。
发布于 2016-11-09 07:19:08
UISpy
是一个使用.NET的UIAutomation程序集的.NET程序。这些程序集是在.NET框架2中引入的。
Inspect
是使用UIAutomationCore.dll的本机程序(可在系统目录中找到)。UIAutomationCore是实现UI Automation Windows API的本机COM Windows DLL。此8+已随Windows升级,例如,这里有指向Windows API改进的链接: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...)。它定义了大多数新的Windows8属性、模式和接口。
https://stackoverflow.com/questions/40496048
复制相似问题