What's the difference of UISpy.exe and Inspect.exe? (From Microsoft Windows SDK)

user6767845 picture user6767845 · Nov 8, 2016 · Viewed 13.8k times · Source

I really want to know, how Inspect.exe gets it's UI-Elements, because it gets by far more elements than UISpy (Both available in Microsoft Windows SDK 7).

1) I think UISpy gets it's elements with UIAutomation library, right? (Tried it with UIAutomation and got exactly the same elements, that UISpy displayed).

2) Which library does Inspect.exe use? Because it shows some UI-Elements of a Application with MacromediaFlashPlayerActiveX for example, which I need to get in my own UI-Automation-Application, hope somebody knows something about it.

EDIT: Inspect also have a "UI Automation" Mode, does it also use UIAutomation library? The strange thing about it is, that in Inspect it also shows many more elements than UISpy.

Answer

Simon Mourier picture Simon Mourier · Nov 9, 2016

UISpy is a .NET program that uses .NET's UIAutomation assemblies. These assemblies were introduced with .NET Framework 2.

Inspect is a native program that uses UIAutomationCore.dll (available in the System directory). UIAutomationCore is a native COM Windows DLL that implements the UI Automation Windows API. This API has been upgraded with Windows, for example here is a link to Windows 8+ improvements: What's New in UI Automation?

.NET's UIAutomation assemblies use UIAutomationCore.dll internally. However, Microsoft never upgraded them to new features of the native UI Automation API. A lot of properties (for example all ARIA properties which are very useful), patterns, events, etc, are therefore missing if you use the original .NET's UIAutomation.

But, there is still hope in the .NET world, because there is a project here: https://uiacomwrapper.codeplex.com/ that is a source-compatible newer version of .NET UIAutomation (It's been in fact written by a Microsoft guy, I don't understand why they don't publish this in a more official way and upgrade .NET's UIAutomation...). It defines most new Windows 8 properties, patterns and interfaces.