17

我真的很想知道,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 更多的元素。

4

1 回答 1

28

UISpy是一个使用 .NET 的 UIAutomation 程序集的.NET程序。这些程序集是随 .NET Framework 2 引入的。

Inspect是一个使用 UIAutomationCore.dll 的本机程序(可在 System 目录中找到)。UIAutomationCore 是实现UI 自动化 Windows API的本机COM Windows DLL 。此 API 已随 Windows 升级,例如这里是 Windows 8+ 改进的链接:UI 自动化有哪些新功能?

.NET 的 UIAutomation 程序集在内部使用 UIAutomationCore.dll。但是,Microsoft 从未将它们升级到本机 UI 自动化 API 的新功能。因此,如果您使用原始 .NET 的 UIAutomation,很多属性(例如所有非常有用的 ARIA 属性)、模式、事件等都会丢失。

但是,.NET 世界还是有希望的,因为这里有一个项目:https ://uiacomwrapper.codeplex.com/这是一个源代码兼容的较新版本的 .NET UIAutomation(它实际上是由 Microsoft伙计,我不明白他们为什么不以更官方的方式发布它并升级.NET的UIAutomation ...)。它定义了大多数新的 Windows 8 属性、模式和界面。

于 2016-11-08T23:19:07.943 回答