IAccessibleEx 実装ガイドライン
Microsoft UI オートメーション コアは、IAccessible インターフェイスを介してサーバーによって公開されるアクセス可能なオブジェクトのすべての Microsoft Active Accessibility プロパティを取得できます。 IAccessibleEx を実装する場合は、既存の Microsoft Active Accessibility プロパティを介して公開できない UI 機能の側面のみを公開する必要があります。 このトピックでは、Microsoft Active Accessibility に対応しない UI 機能を表すUI オートメーションプロパティとコントロール パターンを示します。これらは、IAccessibleEx 実装で公開できるプロパティとコントロール パターンです。
このトピックは、次のセクションで構成されています。
プロパティ
次のUI オートメーションプロパティは、Microsoft Active Accessibility 機能と重複しません。 これらは、IAccessibleEx 実装で使用できます。
- AriaProperties
- AriaRole
- AutomationId
- ClassName
- ClickablePoint
- ControllerFor
- カルチャ
- DescribedBy
- FlowsTo
- FrameworkId
- IsContentElement
- IsControlElement
- IsDataValidForForm
- IsRequiredForForm
- ItemStatus
- ItemType
- LabeledBy
- LocalizedControlType
- 方向
AcceleratorKey プロパティと AccessKey UI オートメーション プロパティは accKeyboardShortcut Microsoft Active Accessibility プロパティと重複しますが、アクセス キーとアクセラレータの両方を持つコントロールの IAccessibleEx 実装で使用することはできます。 同様に、ControlType UI オートメーション プロパティは Microsoft Active Accessibility accRole プロパティと重複しますが、引き続き IAccessibleEx 実装でそれを使用して、コントロールのより具体的なロールを定義できます。
次のUI オートメーション要素プロパティは既に Microsoft Active Accessibility プロパティでカバーされているため、IAccessibleEx 実装で使用する必要はありません。
UI Automation のプロパティ | Microsoft Active Accessibility Equivalent |
---|---|
BoundingRectangle | accLocation |
HasKeyboardFocus | accState、 STATE_SYSTEM_FOCUSED |
IsEnabled | accState、 STATE_SYSTEM_UNAVAILABLE |
IsKeyboardFocusable | accState、 STATE_SYSTEM_FOCUSABLE |
IsPassword | accState、 STATE_SYSTEM_PROTECTED |
HelpText | accHelp |
名前 | accName |
NativeWindowHandle | WindowFromAccessibleObject |
IsOffscreen | accState、 STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN |
ProcessId | UI オートメーション コアによって提供される |
サポートされていないUI オートメーション プロパティの場合、IRawElementProviderSimple::GetPropertyValue メソッドの実装で pRetVal パラメーターをVT_EMPTYに設定し、S_OKを返す必要があります。 UIA_E_NOTSUPPORTEDを返すと、MSAA から UIA プロキシに対応するプロパティの既定のマッピングが削除されることがあります。
コントロール パターン
次のUI オートメーションコントロール パターンは、Microsoft Active Accessibility 機能と重複しません。 これらは、IAccessibleEx 実装で使用できます。
- Dock
- ExpandCollapse
- グリッド
- GridItem
- MultipleView
- RangeValue
- Scroll
- ScrollItem
- SynchronizedInput
- テーブル
- TableItem
- 変換
RangeValue コントロール パターンと Transform コントロール パターンの場合、一部のメソッドは、UI オートメーション コントロール パターンと Microsoft Active Accessibility メソッドの間で重複しています。 このような場合は、両方を実装する必要があります。 たとえば、Microsoft Active Accessibility の IAccessible::get_accValue メソッドと IAccessible::p ut_accValue メソッドの両方を実装する必要があります。UI オートメーションIRangeValueProvider::Value メソッドと IRangeValueProvider::SetValue メソッドが必要です。 内部的には、実装でこれらのコードを共有できます。 両方のセットを実装するこの要件により、既存の Microsoft Active Accessibility クライアントで IAccessible インターフェイスを使用できるように保ちながら、パターン インターフェイスの部分的な実装を回避できます。
次のUI オートメーションコントロール パターンは、コントロールに以下に示すロールのいずれかが含まれている場合は必要ありません。それ以外の場合は、関連する場合は明示的にサポートする必要があります。
UI オートメーション コントロール パターン | Microsoft Active Accessibility Role |
---|---|
InvokePattern | accDefaultAction プロパティの値が NULL でないROLE_SYSTEM_PUSHBUTTON、ROLE_SYSTEM_MENUITEM、ROLE_SYSTEM_BUTTONDROPDOWN、ROLE_SYSTEM_SPLITBUTTON、およびその他のロール。 |
SelectionItemPattern | ROLE_SYSTEM_LISTITEM、 ROLE_SYSTEM_RADIOBUTTON |
SelectionPattern | ROLE_SYSTEM_LIST |
TogglePattern | ROLE_SYSTEM_CHECKBUTTON |
ValuePattern | accValue プロパティの値が NULL でない場合は、ROLE_SYSTEM_TEXT (読み取り専用でない場合)、ROLE_SYSTEM_PROGRESSBAR、ROLE_SYSTEM_COMBOBOX、およびその他のロール。 |
WindowPattern | 最上位レベルの Microsoft Win32 HWNDで自動的にサポートされます。 |
UI オートメーション プロパティ変更イベントの WinEvents
IAccessible に対して定義されたイベントに加えて、次のイベント識別子も定義され、対応するUI オートメーションプロパティのプロパティ変更イベントとして IAccessibleEx 実装で使用できます。 これらは、 IAccessible に対して定義されているイベントと同じメカニズムを使用します。 詳細については、「 WinEvents」を参照してください。
上記のイベントの後にEVENT_OBJECT_値が一覧表示され、 IAccessibleEx の実装では、一覧表示されている変更されたイベントに加えて、このイベントを発生させる必要があります。 これにより、既存の IAccessibleEx クライアント コードを引き続き動作させ、関心のあるクライアントにより細かいイベント情報を伝達できます。
関連トピック