2

我有一个Windows应用程序,它根据配置从屏幕捕获细节。我正在使用UI Automation从屏幕捕捉细节。在Visual Studio安装的开发人员的机器上,一切正常。当我在另一个只安装了.NET Framework 4.5的系统上运行相同的应用程序时,它开始出现奇怪的行为,并且无法检测到子元素。UI Automation是否有任何依赖关系?

我的问题是为什么它可以在安装了Visual Studio和.NET Framework的开发人员的机器上正常工作。有什么不同?只要有先决条件,我们是否缺少任何东西? UI自动化或任何我们缺少的图书馆的依赖关系..?

在此先感谢 - 请帮助我。

回答

0

它看起来像一个已知的在.NET包装本地UIAutomationCore.dll(是的,它的核心不是.NET)的bug。它包含在WinVista +中(.NET Framework也将它添加到WinXP中)。

这是一个C# example如何使用来自C#的原生COM API(UIAutomationCore.dll)。这里只是复制代码:

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

呀做一天的阅读后,在最后,我才知道解决的办法是,德是在Visual Studio中不存在依赖关系。

此行为是由于对应用程序缺乏权限。所以要克服这种行为,我们必须得到签署我们的应用程序还有一两件事的非常重要的一点是把你的可执行文件在Program Files文件

参考链接:https://msdn.microsoft.com/en-us/library/windows/desktop/ee671610(v=vs.85).aspx