UI自动化是否有任何依赖关系?

时间:2017-02-28 05:46:25

标签: c# .net visual-studio-2012 ui-automation microsoft-ui-automation

我有一个Windows应用程序,它根据配置从屏幕捕获详细信息。我正在使用UI Automation从屏幕捕获详细信息。在安装了Visual Studio的开发人员的机器上,一切正常。当我在另一个只安装了.NET Framework 4.5的系统上运行相同的应用程序时,它开始表现得很奇怪,而且它无法检测到子元素。

我的问题是为什么它在安装了Visual Studio和.NET Framework的开发人员的机器上运行良好。有什么不同?在先决条件方面我们有什么遗漏吗? UI自动化的任何依赖关系或我们缺少的任何库..?

提前致谢 - 请帮帮我。

2 个答案:

答案 0 :(得分:1)

看起来像.NET包装器中的已知错误本机UIAutomationCore.dll(是的,它的核心不是.NET)。它包含在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);
        }
    }
}

答案 1 :(得分:0)

在做了一天的阅读之后,我终于知道解决方案是der并不依赖Visual Studio。

此行为是由于缺少应用程序的权限。所以为了克服这种行为,我们必须签署我们的应用程序,还有一件事非常重要的是将可执行文件放在Program Files中

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