我在窗體上有一個TreeView控件,我遞歸地瀏覽窗口本身開始的另一個窗口的元素。我正在使用它來查找元素:Windows用戶界面自動化不顯示所有子元素?
getRecursiveElements(AutomationElement parent)
{
children = parent.FindAll(TreeScope.Children, Condition.TrueCondition);
foreach (AutomationElement child in children)
{
addToTreeView(child);
getRecursiveElements(child);
}
}
一般而言,代碼在大多數情況下工作得很好。樹被填充,我有一些其他支持代碼允許我雙擊,例如樹視圖中的一個元素,它會突出顯示目標表單上的元素。
我遇到的問題是,雖然它生成了一個很棒的樹,但仍有一些元素缺少某些目標程序。
這有什麼可能的原因,有什麼辦法可以解決嗎? 如果我從user32.dll中調用EnumChildWindows()
會有同樣的問題嗎?
你可以舉一些它正在跳過的元素類型的例子嗎?您是否將您的樹與SDK中的UISpy或Inspect工具生成的樹相比較? UIA確實有一個'views'的概念,它是一個除了提供給Find的條件外還應用的過濾器。默認情況下,UIA會過濾掉不是內容元素的東西,因此如果枚舉列表框或列表視圖,則只會顯示列表框,但不會顯示滾動條或標題。這是你錯過的東西,還是其他的東西? – BrendanMcK