2016-11-08 1 views
6

je veux vraiment savoir, comment Inspect.exe tire son interface utilisateur-éléments, parce qu'il obtient de loin plus d'éléments que UISpy (tous deux disponibles dans Microsoft Windows SDK 7)Quelle est la différence entre UISpy.exe et Inspect.exe? (A partir de Microsoft Windows SDK)

1) Je pense que UISpy obtient ses éléments avec la bibliothèque UIAutomation, non? (Essayé avec UIAutomation et obtenu exactement les mêmes éléments, que UISpy affiché)

2) Quelle bibliothèque utilise Inspect.exe? Parce qu'il montre des éléments d'interface utilisateur d'une application avec MacromediaFlashPlayerActiveX par exemple, ce que je dois obtenir dans ma propre application UI-Automation, j'espère que quelqu'un en saura quelque chose.

EDIT: Inspect dispose également d'un mode "UI Automation", utilise-t-il également la librairie UIAutomation? La chose étrange à propos de cela est que, dans Inspect, il montre aussi beaucoup plus d'éléments que UISpy.

Nous vous remercions à l'avance

+0

Pas vraiment un doublon, mais [voici une question plus ancienne liée à la mienne qui pourrait donner quelques informations] (http://stackoverflow.com/questions/9282275/automationelement-shows-up-using-inspect-exe-but -does-show-not-up-when-using-uia). –

+0

UISpy est [déclaré obsolète] (https://msdn.microsoft.com/en-us/library/ms727247 (v = vs.110) .aspx), Inpect est le remplacement recommandé. Vous voyez des frictions au sein de Microsoft entre des groupes très différents dans des divisions très différentes, c'est une très grande entreprise. UI Automation est une responsabilité de groupe Windows, ils n'aiment pas .NET, détenue par des serveurs et des outils. Malheureusement, la débâcle de WinRT ne les a pas beaucoup atténués. Si vous ciblez .NET, UISpy est le reflet le plus précis de ce que vous pouvez faire avec l'espace de noms System.Windows.Automation. –

Répondre

11

UISpy est un programme .NET qui utilise les ensembles de UIAutomation de .NET. Ces assemblées ont été introduites avec .NET Framework 2.

Inspect est un programme natif qui utilise UIAutomationCore.dll (disponible dans le répertoire System). UIAutomationCore est un DLL Windows COM qui implémente le UI Automation Windows API. Cette API a été mise à niveau avec Windows, par exemple voici un lien vers les améliorations Windows 8+: What's New in UI Automation?

Les assemblages UIAutomation de .NET utilisent en interne UIAutomationCore.dll. Toutefois, Microsoft ne les a jamais mis à niveau vers de nouvelles fonctionnalités de l'API UI Automation native. Beaucoup de propriétés (par exemple toutes les propriétés ARIA qui sont très utiles), les modèles, les événements, etc., sont donc manquantes si vous utilisez l'UIAutomation .NET d'origine. Mais, il y a encore de l'espoir dans le monde .NET, car il y a un projet ici: https://uiacomwrapper.codeplex.com/ qui est une version plus récente de .NET UIAutomation compatible avec la source (il a été écrit par un gars de Microsoft, je ne sais pas) Je ne comprends pas pourquoi ils ne publient pas cela de façon plus officielle et ne mettent pas à niveau UIAutomation de .NET ...). Il définit la plupart des nouvelles propriétés, modèles et interfaces de Windows 8.