IAccessible プロキシ
IAccessible プロキシは、標準 UI 要素 (COMCTL および COMCTL32 の USER コントロール、USER メニュー、共通コントロール) の既定のアクセシビリティ情報を提供します。 この既定のサポートは、Oleacc.dllによって作成された IAccessible オブジェクトを介して公開され、追加のサーバー開発作業なしで Microsoft Active Accessibility サポートを提供します。 その後、サーバーは 動的注釈 API を使用して、Oleacc.dllによって公開される情報の多くを変更できますが、完全な制御はありません。
プロキシの作成
UI 要素が IAccessible インターフェイスをネイティブにサポートしているかどうかを判断するには、Oleacc.dll WM_GETOBJECTメッセージを 送信します。 0 以外の戻り値は、要素が Microsoft Active Accessibility をネイティブにサポートし、独自の IAccessible サポートを提供することを意味します。 ただし、戻り値が 0 の場合、Oleacc.dllは UI 要素のプロキシ オブジェクトを提供し、その代わりに意味のある情報を返そうとします。 WM_GETOBJECTの詳細については、「WM_GETOBJECTのしくみ」を参照してください。
公開される情報
Oleacc.dllは、UI 要素の Windows クラス名を使用して、 各 IAccessible プロパティに対して公開する必要がある情報とその情報の収集方法を決定します。 たとえば、Oleacc.dll は GetWindowText 関数を呼び出して標準のプッシュ ボタンの Name プロパティを取得しますが、この同じ関数を呼び出して、標準の編集コントロールの Value プロパティを取得します。 実際には、Oleacc.dllは、各 IAccessible メソッドを適切な Microsoft Win32 またはコントロール固有のメッセージまたは関数呼び出しにマッピングします。 このクラス名ベースの特殊な大文字と小文字を使用することで、サーバーで Microsoft Active Accessibility をサポートしなくても 、IAccessible プロキシを介して意味のある情報を返すことができます。
標準の UI 要素を使用して構築されたアプリケーションは、通常、追加の開発作業なしで完全な Microsoft Active Accessibility サポートを受けられます。 この規則の例外は、サブクラス化されたコントロール、独自の文字列を格納しないコントロール ( HASSTRINGS スタイルがない場合)、または所有者が描画したコントロールです。 このような場合、Oleacc.dllは情報がコントロールの外部に格納されるため、必要な情報を収集できません。 ただし、これらのシナリオの多くでは、確立された回避策、または動的注釈の使用により、サーバーはOleacc.dllによって提供されるプロキシと連携できます。
汎用プロキシ オブジェクト
Oleacc.dllが UI 要素のクラス名を認識しない場合は、可能な限り多くの情報を公開する汎用プロキシを作成します。 これには、オブジェクトの外接する四角形、親オブジェクト、名前 ( WM_GETTEXT)、ウィンドウ階層内のすべての子が含まれます。