Return Value

The scope of the search is relative to the element on which the method is called.

When searching for a top-level window on the desktop, be sure to specify Children in scope, not Descendants. A search through the entire subtree of the desktop could iterate through thousands of items and lead to a stack overflow.

If your client application might try to find elements in its own user interface, you must make all UI Automation calls on a separate thread.

''' <summary>''' Find a UI Automation child element by ID.''' </summary>''' <param name="controlName">Name of the control, such as "button1"</param>''' <param name="rootElement">Parent element, such as an application window, or the ''' AutomationElement.RootElement when searching for the application window.</param>''' <returns>The UI Automation element.</returns>PrivateFunction FindChildElement(ByVal controlName AsString, ByVal rootElement As AutomationElement) _
As AutomationElement
If controlName = ""OrElse rootElement IsNothingThenThrowNew ArgumentException("Argument cannot be null or empty.")
EndIf' Set a property condition that will be used to find the main form of the' target application. In the case of a WinForms control, the name of the control' is also the AutomationId of the element representing the control.Dim propCondition AsNew PropertyCondition(AutomationElement.AutomationIdProperty, _
controlName, PropertyConditionFlags.IgnoreCase)
' Find the element.Return rootElement.FindFirst(TreeScope.Element Or TreeScope.Children, propCondition)
EndFunction'FindChildElement