У меня на форме есть элемент TreeView, и я рекурсивно перебираю элементы другого окна, начиная с самого окна. Я использую это, чтобы найти элементы:
getRecursiveElements(AutomationElement parent)
{
children = parent.FindAll(TreeScope.Children, Condition.TrueCondition);
foreach (AutomationElement child in children)
{
addToTreeView(child);
getRecursiveElements(child);
}
}
Вообще-то, в большинстве случаев код работает достаточно хорошо. Дерево заполнено, и у меня есть немного другого поддерживающего кода, позволяющего мне дважды щелкнуть, например, по элементу в дереве, и он выделит этот элемент на целевой форме.
Проблема в том, что, хотя дерево генерирует потрясающее дерево, для некоторых целевых программ некоторые элементы все еще отсутствуют.
Какие могут быть причины для этого, и есть ли способ обойти это?
Если я вызову EnumChildWindows()
из user32.dll, будет ли у него та же проблема?