我有一个Windows应用程序,它根据配置从屏幕捕获详细信息。我正在使用UI Automation从屏幕捕获详细信息。在安装了Visual Studio的开发人员的机器上,一切正常。当我在另一个只安装了.NET Framework 4.5的系统上运行相同的应用程序时,它开始表现得很奇怪,而且它无法检测到子元素。
我的问题是为什么它在安装了Visual Studio和.NET Framework的开发人员的机器上运行良好。有什么不同?在先决条件方面我们有什么遗漏吗? UI自动化的任何依赖关系或我们缺少的任何库..?
提前致谢 - 请帮帮我。
答案 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