【问题标题】:Are there any dependencies for UI Automation?UI 自动化是否有任何依赖项?
【发布时间】:2017-07-18 23:18:46
【问题描述】:

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

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

提前致谢 - 请帮帮我。

【问题讨论】:

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


    【解决方案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);
            }
        }
    }
    

    【讨论】:

    【解决方案2】:

    是的,经过一天的阅读,我终于知道解决方案是 der 不依赖于 Visual Studio。

    这种行为是由于缺乏对应用程序的权限。因此,为了克服这种行为,我们必须对我们的应用程序进行签名,另外一件非常重要的事情是将您的可执行文件放在 Program Files 中

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 2019-08-31
      • 2019-09-10
      相关资源
      最近更新 更多