UI Automation Overview
This documentation is intended for .NET Framework developers who want to use the managed UI Automation classes defined in the System.Windows.Automation namespace. For the latest information about UI Automation, see Windows Automation API: UI Automation.
Microsoft UI Automation is the new accessibility framework for Microsoft Windows, available on all operating systems that support Windows Presentation Foundation (WPF).
UI Automation provides programmatic access to most user interface (UI) elements on the desktop, enabling assistive technology products such as screen readers to provide information about the UI to end users and to manipulate the UI by means other than standard input. UI Automation also allows automated test scripts to interact with the UI.
UI Automation does not enable communication between processes started by different users through the Run as command.
applications can be written with the assurance that they will work on multiple frameworks. The UI Automation core masks any differences in the frameworks that underlie various pieces of UI. For example, the Content property of a WPF button, the Caption property of a Win32 button, and the ALT property of an HTML image are all mapped to a single property, Name, in the UI Automation view. GTMT
UI Automation provides full functionality in Windows Vista, Microsoft Windows XP, and Windows Server 2003.
offer some support for Microsoft Active Accessibility client applications, through a built-in bridging service.GTMT
UI Automation has four main components, as shown in the following table.
Provider API (UIAutomationProvider.dll and UIAutomationTypes.dll)
A set of interface definitions that are implemented by , objects that provide information about UI elements and respond to programmatic input.GTMT
Client API (UIAutomationClient.dll and UIAutomationTypes.dll)
A set of types for managed code that enables applications to obtain information about the UI and to send input to controls.GTMT
The underlying code (sometimes called the UI Automation core) that handles communication between providers and clients.
A set of for standard legacy controls. (WPF controls have native support for UI Automation.) This support is automatically available to client applications.GTMT
From the software developer's perspective, there are two ways of using UI Automation: to create support for custom controls (using the provider API), and creating applications that use the UI Automation core to communicate with UI elements (using the client API). Depending on your focus, you should refer to different parts of the documentation. You can learn more about the concepts and gain practical how-to knowledge in the following sections.
UI Automation Fundamentals (this section)
Broad overviews of the concepts.
Overviews and how-to topics to help you use the provider API.
Overviews and how-to topics to help you use the client API.
Client application developers.
Information about how control patterns should be implemented by providers, and what functionality is available to clients.
Information about how the Text control pattern should be implemented by providers, and what functionality is available to clients.
Information about the properties and control patterns supported by different .GTMT
The following table lists UI Automation namespaces, the DLLs that contain them, and the audience that uses them.
Developers of for frameworks other than WPF.GTMT
Developers of for frameworks other than WPF; used to implement the TextPattern control pattern. GTMT
Developers of for WPF.GTMT
UI Automation exposes every piece of the UI to client applications as an AutomationElement. Elements are contained in a tree structure, with the desktop as the root element. Clients can filter the of the tree as a or a . Applications can also create custom views.GTMTGTMTGTMT
AutomationElement objects expose common properties of the UI elements they represent. One of these properties is the , which defines its basic appearance and functionality as a single recognizable entity: for example, a button or check box. GTMT
In addition, elements expose that provide properties specific to their control types. Control patterns also expose methods that enable clients to get further information about the element and to provide input.GTMT
There is not a one-to-one correspondence between control types and control patterns. A control pattern may be supported by multiple control types, and a control may support multiple control patterns, each of which exposes different aspects of its behavior. For example, a combo box has at least two control patterns: one that represents its ability to expand and collapse, and another that represents the selection mechanism. For specifics, see UI Automation Control Types.
UI Automation also provides information to client applications through events. Unlike WinEvents, UI Automation events are not based on a broadcast mechanism. UI Automation clients register for specific event notifications and can request that specific UI Automation properties and control pattern information be passed into their event handlers. In addition, a UI Automation event contains a reference to the element that raised it. Providers can improve performance by raising events selectively, depending on whether any clients are listening.