2014-06-21 34 views
1

我將一些UI自動化從System.Windows.Automation API移植到本機UIAutomationClient API,並遇到了感覺像是一個簡單問題,但找不到解決方案。Windows UIAutomation創建PropertyCondition

我需要找到使用代碼沿着這些線路的用戶界面元素:

IUIAutomationElement namedElement = currentWindow.FindFirst(UIAutomationClient.TreeScope.TreeScope_Descendants, nameCondition); 

這裏,nameCondition對象應在IUIAutomationCondition的元素的名稱與之進行比較的字符串。

使用舊System.Windows.Automation我會寫爲:

PropertyCondition nameCondition = new PropertyCondition(AutomationElement.NameProperty, "name"); 

但是,我不能工作了如何使用UIAutomation API來創建PropertyCondition。我見過的唯一的例子似乎表明這些方針的東西:

IUIAutomationCondition nameCondition = cuiAutomation.CreatePropertyCondition(propertyIdName, "name"); 

這裏,propertyIdName應該是代表NameProperty一個int。但是,我無法弄清楚如何在這裏得到正確的int。我認爲它必須在UIAutomation API中的某個地方作爲常量,但無法找到它。

回答

0

不是一個完整的答案,但我發現在UIAutomationClient.UIA_PropertyIds中的值。不幸的是,試圖直接從您的代碼訪問它們仍然會導致錯誤,但您可以輕鬆地「轉到定義」來獲取id值。