アクティブなアクセシビリティのしくみ
Microsoft Active Accessibility は、クライアントと呼ばれるアクセシビリティ補助機能が、他のアプリケーションやオペレーティング システムの標準およびカスタム UI 要素と対話できるように設計されています。 Microsoft Active Accessibility クライアントは、Microsoft Active Accessibility を使用してアプリケーションの UI 要素にアクセス、識別、または操作する任意のプログラムです。 クライアントには、アクセシビリティ支援、自動テスト ツール、一部のコンピューター ベースのトレーニング アプリケーションが含まれます。
Microsoft Active Accessibility を使用すると、クライアント アプリケーションで次のことができます。
- 情報を照会する。たとえば、特定の場所にある UI 要素についてです。
- 情報が変更されたときに通知を受け取る。たとえば、コントロールが灰色になったり、テキスト文字列が変更されたりする場合などです。
- ユーザー インターフェイスまたはドキュメントの内容に影響を与えるアクションを実行する。たとえば、プッシュ ボタンをクリックし、メニューをドロップダウンして、メニュー コマンドを選択します。
クライアントとやり取りして情報を提供するアプリケーションは、サーバーと呼ばれます。 サーバーは、Microsoft Active Accessibility を使用して、その UI 要素に関する情報をクライアントに提供します。 Microsoft Active Accessibility を使用してユーザー インターフェイスに関する情報を公開するコントロール、モジュール、またはアプリケーションは、Microsoft Active Accessibility サーバーと見なされます。 サーバーは、イベント通知 (NotifyWinEventの呼び出しなど) を送信し、UI 要素へのアクセスを求めるクライアント要求 (OLEACCから送信されたメッセージ WM_GETOBJECT 処理など) に応答クライアントと通信します。 サーバーは、IAccessible インターフェイスを介して情報を公開します。
Microsoft Active Accessibility を使用すると、サーバー アプリケーションで次のことができます。
- カスタム ユーザー インターフェイス オブジェクトとそのクライアント ウィンドウの内容に関する情報を提供します。
- ユーザー インターフェイスが変更されたときに通知を送信します。
たとえば、ユーザーがワード プロセッサのカスタム ツール バーからコマンドを音声で選択できるようにするには、音声認識プログラムにそのツール バーに関する情報が必要です。 そのため、ワード プロセッサでは、その情報を使用できるようにする必要があります。 Microsoft Active Accessibility は、ワード プロセッサがカスタム ツール バーに関する情報を公開し、音声認識プログラムがその情報を取得するための手段を提供します。
クライアント アプリケーションとアクティブなアクセシビリティ
サーバー UI が変更されたときに Microsoft Active Accessibility クライアントに通知を受け取り、その情報をユーザーに伝える必要があります。 クライアントに UI の変更に関する通知を確実に受け取るために、Windows イベント (WinEvents) と呼ばれるメカニズムを使用して通知を受信するように登録します。 詳細については、「WinEvents」を参照してください。
特定の UI 要素について学習し、操作するために、クライアントは Microsoft Active Accessibility Component Object Model (COM) インターフェイス IAccessibleを使用します。
クライアントは、次の 4 つの方法で UI 要素の IAccessible オブジェクトを取得できます。
- AccessibleObjectFromWindow呼び出し、UI 要素のウィンドウ ハンドルを渡します。
- AccessibleObjectFromPoint を呼び出して、UI 要素の境界矩形内の画面位置を渡します。
- WinEvent フックを設定し、通知を受信し、AccessibleObjectFromEvent呼び出して、イベントを生成した UI 要素の IAccessible インターフェイス ポインターを取得します。
- accNavigate や get_accParent などの IAccessible メソッドを呼び出して、別の IAccessible オブジェクトに移動します。