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_MENUITEMROLE_SYSTEM_BUTTONDROPDOWN、ROLE_SYSTEM_SPLITBUTTON、およびその他のロール。
SelectionItemPattern ROLE_SYSTEM_LISTITEMROLE_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」を参照してください。

IAccessibleEx 実装の WinEvent ID Microsoft Active Accessibility からの関連 WinEvent ID
UIA_AriaPropertiesPropertyId None
UIA_AriaRolePropertyId None
UIA_ControllerForPropertyId None
UIA_DescribedByPropertyId None
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId None
UIA_InputDiscardedEventId None
UIA_InputReachedOtherElementEventId None
UIA_InputReachedTargetEventId None
UIA_IsDataValidForFormPropertyId None
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId None
UIA_MultipleViewCurrentViewPropertyId None
UIA_ScrollHorizontallyScrollablePropertyId None
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId None
UIA_ScrollVerticallyScrollablePropertyId None
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId None
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

上記のイベントの後にEVENT_OBJECT_値が一覧表示され、 IAccessibleEx の実装では、一覧表示されている変更されたイベントに加えて、このイベントを発生させる必要があります。 これにより、既存の IAccessibleEx クライアント コードを引き続き動作させ、関心のあるクライアントにより細かいイベント情報を伝達できます。

WinEvents

IAccessibleEx インターフェイス