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