UI オートメーション プロバイダーの概要UI Automation Providers Overview


このドキュメントは、UI オートメーションUI Automation 名前空間で定義されているマネージド System.Windows.Automation クラスを使用する .NET Framework 開発者を対象としています。This documentation is intended for .NET Framework developers who want to use the managed UI オートメーションUI Automation classes defined in the System.Windows.Automation namespace. UI オートメーションUI Automationの最新情報については、「 Windows Automation API: UI オートメーション」を参照してください。For the latest information about UI オートメーションUI Automation, see Windows Automation API: UI Automation.

UI オートメーション プロバイダーを使用すれば、コントロールで UI オートメーション クライアント アプリケーションと通信することができます。UI Automation providers enable controls to communicate with UI Automation client applications. 一般に、各コントロールまたは ユーザー インターフェイス (UI)user interface (UI) 内のその他の要素はプロバイダーによって表現されます。In general, each control or other distinct element in a ユーザー インターフェイス (UI)user interface (UI) is represented by a provider. プロバイダーは、要素に関する情報を公開し、必要に応じて、クライアント アプリケーションがコントロールと対話できるようにするコントロール パターンを実装します。The provider exposes information about the element and optionally implements control patterns that enable the client application to interact with the control.

通常、クライアント アプリケーションはプロバイダーと直接連動する必要はありません。Client applications do not usually have to work directly with providers. Win32、Windows フォーム、または Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) のフレームワークを使用するアプリケーションの標準コントロールのほとんどは、UI オートメーションUI Automation システムに自動的に公開されます。Most of the standard controls in applications that use the Win32, Windows Forms, or Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) frameworks are automatically exposed to the UI オートメーションUI Automation system. カスタム コントロールを実装するアプリケーションがそれらのコントロール用の UI オートメーションUI Automation プロバイダーを実装することもできます。クライアント アプリケーションがそれらにアクセスするために特別な手順を実行する必要はありません。Applications that implement custom controls may also implement UI オートメーションUI Automation providers for those controls, and client applications do not have to take any special steps to gain access to them.

このトピックでは、コントロール開発者が UI オートメーションUI Automation プロバイダーを実装する方法の概要について説明します。特に、Windows フォームおよび Win32 ウィンドウのコントロールについて説明します。This topic provides an overview of how control developers implement UI オートメーションUI Automation providers, particularly for controls in Windows Forms and Win32 windows.

プロバイダーの種類Types of Providers

UI オートメーション プロバイダーは、クライアント側プロバイダーとサーバー側プロバイダーの 2 つのカテゴリに分類されます。UI Automation providers fall into two categories: client-side providers and server-side providers.

クライアント側プロバイダーClient-side providers

クライアント側プロバイダーは、 UI オートメーションUI Automationをサポートしていないか部分的にサポートしているアプリケーションと通信する UI オートメーション クライアントによって実装されます。Client-side providers are implemented by UI Automation clients to communicate with an application that does not support, or does not fully support, UI オートメーションUI Automation. 通常、クライアント側プロバイダーは、Windows メッセージを送受信することによって、プロセス境界を越えてサーバーと通信します。Client-side providers usually communicate with the server across the process boundary by sending and receiving Windows messages.

Win32、Windows フォーム、または WPFWPF アプリケーションのコントロール用の UI オートメーションプロバイダーはオペレーティングシステムの一部として提供されるため、クライアントアプリケーションは、ほとんどの場合、独自のプロバイダーを実装する必要はありません。この概要では、これらについては説明しません。Because UI Automation providers for controls in Win32, Windows Forms, or WPFWPF applications are supplied as part of the operating system, client applications seldom have to implement their own providers, and this overview does not cover them further.

サーバー側プロバイダーServer-side providers

サーバー側プロバイダーは、カスタムコントロール、または Win32、Windows フォーム、WPFWPF以外の UI フレームワークに基づくアプリケーションによって実装されます。Server-side providers are implemented by custom controls or by applications that are based on a UI framework other than Win32, Windows Forms, or WPFWPF.

また、サーバー側プロバイダーは、サーバーからクライアントに要求するインターフェイスを UI オートメーションUI Automation コア システムに公開することにより、プロセス境界を越えてクライアント アプリケーションと通信します。Server-side providers communicate with client applications across the process boundary by exposing interfaces to the UI オートメーションUI Automation core system, which in turn serves requests from clients.

UI オートメーション プロバイダーの概念UI Automation Provider Concepts

ここでは、UI オートメーション プロバイダーを実装するために理解しておく必要があるいくつかの重要な概念について簡単に説明します。This section provides brief explanations of some of the key concepts you need to understand in order to implement UI Automation providers.


UI オートメーションUI Automation 要素は、UI オートメーション クライアントからアクセス可能な ユーザー インターフェイス (UI)user interface (UI) の一部です。elements are pieces of ユーザー インターフェイス (UI)user interface (UI) that are visible to UI Automation clients. 例として、アプリケーション ウィンドウ、ペイン、ボタン、ツールヒント、リスト ボックス、およびリスト項目が含まれています。Examples include application windows, panes, buttons, tooltips, list boxes, and list items.

UI オートメーションUI Automation 要素は、 UI オートメーションUI Automation ツリーとしてクライアントに公開されます。elements are exposed to clients as a UI オートメーションUI Automation tree. UI オートメーションUI Automation は、要素間を移動することによって、ツリーを構成します。constructs the tree by navigating from one element to another. ナビゲーションは、親、兄弟、または子を指す要素ごとに、プロバイダーによって有効にされます。Navigation is enabled by the providers for each element, each of which may point to a parent, siblings, and children.

UI オートメーションUI Automation ツリーのクライアントビューの詳細については、「 UI オートメーションツリーの概要」を参照してください。For more information on the client view of the UI オートメーションUI Automation tree, see UI Automation Tree Overview.


次の表に示すように、クライアントは 3 つのプリンシパル ビューで UI オートメーションUI Automation ツリーを表示できます。A client can see the UI オートメーションUI Automation tree in three principal views, as shown in the following table.

列ビューRaw view すべての要素が含まれます。Contains all elements.
コントロール ビューControl view コントロールである要素が含まれます。Contains elements that are controls.
[コンテンツ] ビューContent view コンテンツである要素が含まれます。Contains elements that have content.

UI オートメーションUI Automation ツリーのクライアントビューの詳細については、「 UI オートメーションツリーの概要」を参照してください。For more information on client views of the UI オートメーションUI Automation tree, see UI Automation Tree Overview.

コンテンツ要素またはコントロール要素としての要素の定義はプロバイダー実装で行う必要があります。It is the responsibility of the provider implementation to define an element as a content element or a control element. コントロール要素はコンテンツ要素であることもないこともありますが、コンテンツ要素はすべてコントロール要素です。Control elements may or may not also be content elements, but all content elements are control elements.


フレームワークは、画面のある領域で子コントロール、ヒット テスト、およびレンダリングを管理するコンポーネントです。A framework is a component that manages child controls, hit-testing, and rendering in an area of the screen. たとえば、Win32 ウィンドウ (HWND とも呼ばれます) は、メニューバー、ステータスバー、ボタンなどの複数の UI オートメーションUI Automation 要素を含むフレームワークとして機能することができます。For example, a Win32 window, often referred to as an HWND, can serve as a framework that contains multiple UI オートメーションUI Automation elements such as a menu bar, a status bar, and buttons.

リストボックスやツリービューなどの Win32 コンテナーコントロールは、子項目をレンダリングしてヒットテストを実行するための独自のコードを含んでいるため、フレームワークと見なされます。Win32 container controls such as list boxes and tree views are considered to be frameworks, because they contain their own code for rendering child items and performing hit-testing on them. これに対して、 WPFWPF リスト ボックスは、包含する WPFWPF ウィンドウによってレンダリングやヒット テストが処理されるため、フレームワークではありません。By contrast, a WPFWPF list box is not a framework, because the rendering and hit-testing is being handled by the containing WPFWPF window.

アプリケーション内の UIUI はさまざまなフレームワークで構成することができます。The UIUI in an application can be made up of different frameworks. たとえば、HWND アプリケーションウィンドウには、ダイナミック HTML (DHTML) が含まれている場合があります。 DHTML には、コンボボックスなどのコンポーネントが含まれています。For example, an HWND application window might contain Dynamic HTML (DHTML) which in turn contains a component such as a combo box in an HWND.


フラグメントは、特定のフレームワーク内の要素のサブツリー全体です。A fragment is a complete subtree of elements from a particular framework. サブツリーのルート ノードにある要素はフラグメント ルートと呼ばれます。The element at the root node of the subtree is called a fragment root. フラグメントルートには親はありませんが、他のフレームワーク (通常は Win32 ウィンドウ (HWND)) 内でホストされます。A fragment root does not have a parent, but is hosted within some other framework, usually a Win32 window (HWND).


すべてのフラグメントのルートノードは、要素 (通常は Win32 ウィンドウ (HWND)) でホストされている必要があります。The root node of every fragment must be hosted in an element, usually a Win32 window (HWND). 例外は、他の要素でホストされないデスクトップです。The exception is the desktop, which is not hosted in any other element. カスタム コントロールのホストは、アプリケーション ウィンドウやトップ レベル コントロールのグループを含めることができるその他のウィンドウではなく、コントロール自体の HWND です。The host of a custom control is the HWND of the control itself, not the application window or any other window that might contain groups of top-level controls.

フラグメントのホストは、 UI オートメーションUI Automation サービスを提供するうえで重要な役割を果たします。The host of a fragment plays an important role in providing UI オートメーションUI Automation services. このホストがフラグメント ルートへの移動を可能にし、いくつかの既定のプロパティを提供するため、カスタム プロバイダーはそれらを実装する必要がありません。It enables navigation to the fragment root, and supplies some default properties so that the custom provider does not have to implement them.

関連項目See also