我有一個組合框包含一個列表(這是一個組合框的標準),有很多元素 - 超過100個。我想找到某些條目來選擇他們。要找到條目,我將給定的模式與每個元素的名稱進行比較。因爲性能方面的原因(超過100個元素),我在父親上使用了一個CacheRequest,它包含所有孩子的範圍,所以我可以很好地並且非常快速地通過所有孩子並找到孩子的正確索引。想要選擇。我有我想要的正確索引,我也有緩存的AutomationElement,但由於我在CacheRequest中指定了AutomationElementMode.None(我仍然必須測試它是否會對性能產生影響),我似乎無法將緩存的元素轉換爲我可以用於未來調用的元素(「實時」元素)。AutomationElement:緩存元素(通過GetCachedChildren)爲「活」元素
我試着通過NativeWindowHandle(因爲有一個函數AutomationElement.FromWindowHandle)轉換,但句柄似乎是0,所以這是沒有辦法。
我也沒有嘗試過使用緩存的SelectionPattern,但由於ComboBox有時是定製的,我不知道它是否可以在所有情況下都能正常工作(如果有的話)。
我有孩子索引,我可以得到所有我可以緩存的值 - 我怎樣才能獲得緩存元素的工作/實時AutomationElement?
感謝 安德烈亞斯
(使用C#在Windows 7 64 Win32應用程序(如自動化目標),但不應該有很大的不同)
感謝您的回答!你如何獲得這種聯繫?是否將UIAtuomation轉換爲實現該接口的對象? – 2012-08-09 08:38:16
是的,但只使用非託管API,這在我看來更好。在這裏閱讀更多:http://social.msdn.microsoft.com/Forums/en-US/windowsaccessibilityandautomation/thread/c3f142e1-0624-4ec5-a313-482e72d5454d(據我可以告訴IUIAutomationLegacyIAccessiblePattern不是管理的一部分碼)。讓我知道,如果你想給非託管的嘗試,我可以添加到我的答案。 – chrismead 2012-08-09 15:08:51