2

J'ai une application Windows qui capture les détails de l'écran en fonction de la configuration. J'utilise UI Automation pour capturer les détails de l'écran. Tout fonctionne correctement sur la machine du développeur sur laquelle Visual Studio est installé. Lorsque je cours la même application sur un autre système où nous avons seulement .NET Framework 4.5 installé, il a commencé à se comporter bizarrement, et il n'est pas capable de détecter l'élément enfant.Y a-t-il des dépendances pour UI Automation?

Ma question est pourquoi cela fonctionne bien sur la machine du développeur où Visual Studio et .NET Framework sont installés. Quelle est la différence? Y a-t-il quelque chose qui nous manque en ce qui concerne les prérequis? Toutes les dépendances de UI Automation ou de toute bibliothèque qui nous manque ..?

Merci d'avance - aidez-moi s'il vous plaît.

Répondre

0

Cela ressemble à un bogue connu dans l'encapsuleur .NET autour de UIAutomationCore.dll natif (oui, son noyau n'est pas un .NET). Et il est inclus dans WinVista + (.NET Framework l'ajoute également à WinXP).

Voici un C# example comment utiliser l'API COM native (UIAutomationCore.dll) à partir de C#. Il suffit de copier le code ici:

using System; 
using interop.UIAutomationCore; 

namespace PrintDesktopUiaElementNameViaCom 
{ 
    class PrintDesktopUiaElementNameViaComProgram 
    { 
     static void Main(string[] args) 
     { 
      // Instantiate the UIA object: 
      IUIAutomation _automation = new CUIAutomation(); 
      // Get the root element 
      IUIAutomationElement rootElement = _automation.GetRootElement(); 
      // Get its name 
      string rootName = rootElement.CurrentName; 
      Console.WriteLine(
       "The root automation element's name should be 'Desktop'."); 
      Console.WriteLine("The actual value is: '{0}'", rootName); 
     } 
    } 
} 
0

Ouais enfin après avoir fait la lecture de jour, je suis venu à connaître la solution est que der aucune dépendance sur Visual Studio.

Ce comportement est dû au manque de privilèges de l'application. afin de surmonter ce comportement que nous avons à faire signer notre application et une chose la chose très importante est placer votre fichier exécutable dans Program Files

Liens de référence: https://msdn.microsoft.com/en-us/library/windows/desktop/ee671610(v=vs.85).aspx