Pedoman Implementasi IAccessibleEx

Inti Microsoft UI Automation dapat mengambil semua properti Aksesibilitas Aktif Microsoft untuk objek yang dapat diakses yang diekspos oleh server melalui antarmukaIAccessible. Saat menerapkan IAccessibleEx, Anda hanya harus mengekspos aspek fungsionalitas UI yang tidak dapat diekspos melalui properti Aksesibilitas Aktif Microsoft yang ada. Topik ini mengidentifikasi properti Automation UI dan pola kontrol yang mewakili fungsionalitas UI yang tidak memiliki mitra dalam Aksesibilitas Aktif Microsoft—mereka adalah properti dan pola kontrol yang dapat Anda ekspos dalam implementasi IAccessibleEx.

Topik ini berisi bagian berikut:

Properti

Properti Automasi UI berikut ini tidak tumpang tindih dengan fungsionalitas Aksesibilitas Aktif Microsoft. Mereka dapat digunakan dalam implementasiIAccessibleEx:

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • PengontrolUntuk
  • Budaya
  • DescribedBy
  • FlowsTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • Orientasi

Meskipun properti Automasi UI AcceleratorKey dan AccessKey tumpang tindih dengan properti AccKeyboardShortcut Microsoft Active Accessibility, Anda masih dapat menggunakannya dalam implementasiIAccessibleExuntuk kontrol yang memiliki kunci akses dan akselerator. Demikian pula, properti ControlType UI Automation tumpang tindih dengan properti Microsoft Active Accessibility accRole, tetapi Anda masih dapat menggunakannya dalam implementasi IAccessibleEx untuk menentukan peran yang lebih spesifik untuk kontrol.

Karena properti elemen Automation UI berikut sudah dicakup oleh properti Aksesibilitas Aktif Microsoft, tidak perlu menggunakannya dalam implementasiIAccessibleEx.

Properti Automasi UI 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
Teks Bantuan accHelp
Nama accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Disediakan oleh inti Automation UI

 

Untuk properti Automasi UI yang tidak didukung, implementasi metode IRawElementProviderSimple::GetPropertyValue harus mengatur parameter pRetVal ke VT_EMPTY, dan mengembalikan S_OK. Mengembalikan UIA_E_NOTSUPPORTED dapat menyebabkan Proksi MSAA-ke-UIA menghapus pemetaan default untuk properti yang sesuai.

Pola Kontrol

Pola kontrol Automation UI berikut tidak tumpang tindih dengan fungsionalitas Aksesibilitas Aktif Microsoft. Mereka dapat digunakan dalam implementasiIAccessibleEx:

  • Dok
  • ExpandCollapse
  • Grid
  • GridItem
  • MultipleView
  • RangeValue
  • Gulir
  • ScrollItem
  • SynchronizedInput
  • Meja
  • TableItem
  • Mengubah

Untuk pola kontrol RangeValue dan Transformasi, beberapa metode tumpang tindih antara pola kontrol Automation UI dan metode Aksesibilitas Aktif Microsoft. Dalam kasus ini, keduanya harus diimplementasikan. Misalnya, metode IAccessible::get_accValue dan IAccessible::p ut_accValue harus diimplementasikan, sebagaimana mestinya Automation UIIRangeValueProvider::Value dan metode IRangeValueProvider::SetValue. Secara internal, implementasi dapat berbagi kode untuk ini. Persyaratan untuk mengimplementasikan kedua set ini menghindari implementasi parsial antarmuka pola sambil menjaga antarmuka IAccessible dapat digunakan oleh klien Aksesibilitas Aktif Microsoft yang ada.

Pola kontrol Automation UI berikut tidak diperlukan ketika kontrol memiliki salah satu peran yang diuraikan di bawah ini; jika tidak, mereka harus didukung secara eksplisit jika relevan.

Pola Kontrol Automasi UI Peran Aksesibilitas Aktif Microsoft
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON, dan peran lain di mana nilai properti accDefaultAction tidak NULL.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
TogglePattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern ROLE_SYSTEM_TEXT (ketika bukan baca-saja), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX, dan peran lain ketika nilai properti accValue tidak NULL.
WindowPattern Didukung secara otomatis pada Microsoft Win32HWND tingkat atas.

 

WinEvents untuk Properti Automasi UI Mengubah Peristiwa

Selain peristiwa yang ditentukan untukIAccessible, pengidentifikasi peristiwa berikut juga didefinisikan dan dapat digunakan dengan implementasiIAccessibleExkarena properti mengubah peristiwa untuk properti Automation UI yang sesuai. Ini menggunakan mekanisme yang sama dengan peristiwa yang ditentukan untuk IAccessible. Untuk informasi selengkapnya, lihat WinEvents.

ID WinEvent untuk Implementasi IAccessibleEx Id WinEvent terkait dari Aksesibilitas Aktif Microsoft
UIA_AriaPropertiesPropertyId Tidak
UIA_AriaRolePropertyId Tidak
UIA_ControllerForPropertyId Tidak
UIA_DescribedByPropertyId Tidak
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Tidak
UIA_InputDiscardedEventId Tidak
UIA_InputReachedOtherElementEventId Tidak
UIA_InputReachedTargetEventId Tidak
UIA_IsDataValidForFormPropertyId Tidak
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Tidak
UIA_MultipleViewCurrentViewPropertyId Tidak
UIA_ScrollHorizontallyScrollablePropertyId Tidak
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Tidak
UIA_ScrollVerticallyScrollablePropertyId Tidak
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Tidak
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Untuk peristiwa di atas yang memiliki nilai EVENT_OBJECT_ yang tercantum setelahnya, dan implementasiIAccessibleExharus mengaktifkan peristiwa ini selain peristiwa yang diubah yang tercantum. Ini memungkinkan IAccessibleEx kode klien yang ada untuk terus bekerja, sambil menyampaikan informasi peristiwa yang lebih terperinci kepada klien yang tertarik.

WinEvents

Antarmuka IAccessibleEx