Windows UI Automation не показывает все дочерние элементы?

У меня на форме есть элемент TreeView, и я рекурсивно перебираю элементы другого окна, начиная с самого окна. Я использую это, чтобы найти элементы:

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

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

Вообще-то, в большинстве случаев код работает достаточно хорошо. Дерево заполнено, и у меня есть немного другого поддерживающего кода, позволяющего мне дважды щелкнуть, например, по элементу в дереве, и он выделит этот элемент на целевой форме.

Проблема в том, что, хотя дерево генерирует потрясающее дерево, для некоторых целевых программ некоторые элементы все еще отсутствуют.

Какие могут быть причины для этого, и есть ли способ обойти это? Если я вызову EnumChildWindows() из user32.dll, будет ли у него та же проблема?

5
задан Ozzah 30 August 2011 в 05:00
поделиться