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

1

20

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.

Healthy answered 8/11, 2016 at 20:42 Comment(4)
Not really a duplicate, but here is a related older question of mine that might give some info.Excitant
UISpy is declared obsolete, Inpect is the recommended replacement. You are seeing friction within Microsoft between very different groups in very different divisions, it is a very large company. UI Automation is a Windows group responsibility, they don't like .NET, owned by Servers and Tools. Sadly the WinRT debacle did not tone them down much. If you target .NET then UISpy is the most accurate reflection of what you can do with the System.Windows.Automation namespace.Kingfisher
UISpy is obsolete now, it's recommended to use Inspect.exeUnbent
On a page dated 02018-05-31, Microsoft states "Inspect is a legacy tool. We recommend using Accessibility Insights instead." (Disclaimer: I'm not an expert this area, I was just googling for answers and ended up here (and then at the MS page))Chemesh
E
33

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.

Ejaculatory answered 8/11, 2016 at 23:19 Comment(2)
There is another, better, tool, Visual UI Automation Verify (Visual UIA Verify)Sandell
Nice hint for the tool Visual UIA Verify and a useful article. But it's not easy to find the tool itself. You can download it here: archive.codeplex.com/?p=uiautomationverify ... extract the ZIP, go to sourceCode, extract sourceCode.zip, open the solution, compile it, run it, have fun. ... For me the compilation worked without any problems. I don't understand why there is no official download or binary files.Fidellas

© 2022 - 2024 — McMap. All rights reserved.