簡體   English   中英

Windows UI Automation不顯示所有子元素?

[英]Windows UI Automation not showing all child elements?

我的表單上有一個TreeView控件,我以遞歸方式從窗口本身開始瀏覽另一個窗口的元素。 我用這個來找到元素:

getRecursiveElements(AutomationElement parent)
{
  children = parent.FindAll(TreeScope.Children, Condition.TrueCondition);

  foreach (AutomationElement child in children)
  {
    addToTreeView(child);
    getRecursiveElements(child);
  }
}

一般來說,代碼在大多數情況下都能很好地工作。 樹被填充,我有一些其他支持代碼,允許我雙擊,例如,樹視圖中的元素,它將突出顯示目標表單上的元素。

我遇到的問題是,雖然它生成了一個很棒的樹,但某些目標程序仍然缺少一些元素。

可能有什么理由可以解決這個問題,有什么方法可以解決這個問題嗎? 如果我從user32.dll調用EnumChildWindows()會有同樣的問題嗎?

並非所有程序都為其所有邏輯子項使用單獨的窗口控件。 這主要取決於所使用的GUI框架。

作為一個極端的例子,Qt為每個頂級窗口使用一個窗口。 然后它從表單的WM_PAINT消息處理程序中繪制表單上的所有小部件。

采用這種方法的程序通常不可能通過通用方法自動化。

聽起來您遇到了一個使用某些窗口控件的應用程序,但也使用帶有單個窗口的自定義控件來顯示多個窗口小部件。 這又是很常見的。

你能舉一個更好的例子嗎? 考慮到這個問題,可能是其他形式的“元素”是手動繪制的,因此沒有針對所有內容的不同注冊句柄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM