2016-09-22 84 views
9

我想知道,在.NET,如果(管理)微軟UI自動化框架提供了一些方法來實例化給出一個窗口的AutomationIdAutomationElement型,抑制這種方式需要搜索窗口通過窗口句柄或其他類型的標識符。可以通過AutomationId值實例化AutomationElement類型嗎?

寫在VB.NET理解我的目的僞例如:

Dim automationId As Integer = 1504 
Dim element As AutomationElement = AutomationElement.FromAutomationId(automationId) 
+0

我能找到的最好的是[this](https://msdn.microsoft.com/en-us/library/aa349646(v = vs.110).aspx)。否則,我會說構造你自己的類(如果可能的話)和陰影/覆蓋'AutomationId'屬性。然後,無論何時執行setter,您都將「window」/「control」存儲在全局共享列表/字典中。 –

+0

@Visual Vincent Thankyou,我看到的「問題」是使用該解決方案,它是一種搜索方法,還需要一個AutomationElement來搜索其元素,一種昂貴的查找算法。我想知道是否存在一種更「直接」的方式來避免這一切。 – ElektroStudios

回答

3

哦,不。任何自動化屬性都是元素的屬性。自動化元素不一定對應於HWND(每個HWND都有一個自動化元素,但很少有自動化元素具有HWND,特別是在現代UI框架中),因此需要樹行走。此外,關於UI自動化的好處在於,樹型結構在提供端上出現,而不是在您的應用程序中,減少了跨進程調用的數量。

相關問題