AutomationElement.FindAll(TreeScope, Condition) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает все объекты AutomationElement, которые удовлетворяют заданному условию.
public:
System::Windows::Automation::AutomationElementCollection ^ FindAll(System::Windows::Automation::TreeScope scope, System::Windows::Automation::Condition ^ condition);
public System.Windows.Automation.AutomationElementCollection FindAll (System.Windows.Automation.TreeScope scope, System.Windows.Automation.Condition condition);
member this.FindAll : System.Windows.Automation.TreeScope * System.Windows.Automation.Condition -> System.Windows.Automation.AutomationElementCollection
Public Function FindAll (scope As TreeScope, condition As Condition) As AutomationElementCollection
Параметры
- scope
- TreeScope
Битовая комбинация значений, определяющая область поиска.
- condition
- Condition
Объект, содержащий критерии соответствия.
Возвращаемое значение
Коллекция объектов, которая удовлетворяет заданному условию. Если совпадений нет, возвращается пустая коллекция.
Примеры
В следующем примере показано, как использовать FindAll для поиска всех включенных кнопок в окне.
/// <summary>
/// Finds all enabled buttons in the specified window element.
/// </summary>
/// <param name="elementWindowElement">An application or dialog window.</param>
/// <returns>A collection of elements that meet the conditions.</returns>
AutomationElementCollection FindByMultipleConditions(
AutomationElement elementWindowElement)
{
if (elementWindowElement == null)
{
throw new ArgumentException();
}
Condition conditions = new AndCondition(
new PropertyCondition(AutomationElement.IsEnabledProperty, true),
new PropertyCondition(AutomationElement.ControlTypeProperty,
ControlType.Button)
);
// Find all children that match the specified conditions.
AutomationElementCollection elementCollection =
elementWindowElement.FindAll(TreeScope.Children, conditions);
return elementCollection;
}
''' <summary>
''' Finds all enabled buttons in the specified window element.
''' </summary>
''' <param name="elementWindowElement">An application or dialog window.</param>
''' <returns>A collection of elements that meet the conditions.</returns>
Function FindByMultipleConditions(ByVal elementWindowElement As AutomationElement) As AutomationElementCollection
If elementWindowElement Is Nothing Then
Throw New ArgumentException()
End If
Dim conditions As New AndCondition(New PropertyCondition(AutomationElement.IsEnabledProperty, True), New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button))
' Find all children that match the specified conditions.
Dim elementCollection As AutomationElementCollection = elementWindowElement.FindAll(TreeScope.Children, conditions)
Return elementCollection
End Function 'FindByMultipleConditions
Комментарии
Область поиска относится к элементу, для которого вызывается метод. Элементы возвращаются в порядке, в котором они были обнаружены в дереве.
При поиске окон верхнего уровня на рабочем столе не забудьте указать Children в scope
, а не Descendants. Поиск по всему поддереву рабочего стола может выполнять итерацию по тысячам элементов и привести к переполнению стека.
Если клиентское приложение может попытаться найти элементы в собственном пользовательском интерфейсе, необходимо выполнить все вызовы модель автоматизации пользовательского интерфейса в отдельном потоке.