Udostępnij przez


IAccessibleEx Implementation Guidelines

Rdzeń automatyzacji interfejsu użytkownika firmy Microsoft może pobrać wszystkie właściwości dostępności usługi Microsoft Active Accessibility dla dowolnego dostępnego obiektu uwidocznionego przez serwer za pośrednictwem interfejsu IAccessible. Podczas implementowania interfejsu IAccessibleEx należy uwidocznić tylko te aspekty funkcji interfejsu użytkownika, których w przeciwnym razie nie można uwidocznić za pośrednictwem istniejących właściwości ułatwień dostępu Microsoft Active. W tym temacie opisano właściwości i wzorce sterowania automatyzacji interfejsu użytkownika reprezentujące funkcje interfejsu użytkownika, które nie mają odpowiednika w usłudze Microsoft Active Accessibility — są to właściwości i wzorce sterowania, które można uwidocznić w implementacji interfejsu IAccessibleEx .

Ten temat zawiera następujące sekcje:

Właściwości

Następujące właściwości automatyzacji interfejsu użytkownika nie nakładają się na funkcje microsoft Active Accessibility. Mogą one być używane w implementacji IAccessibleEx :

  • AriaProperties
  • AriaRole
  • Identyfikator automatyzacji
  • ClassName
  • Program ClickablePoint
  • ControllerFor
  • Kultura
  • Opisane przez
  • PrzepływyDo
  • Identyfikator struktury
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • Typ elementu
  • Etykieta wg
  • LocalizedControlType
  • Orientacja

Mimo że właściwości Automation acceleratorKey i AccessKey UI automation nakładają się na właściwość accKeyboardShortcut Microsoft Active Accessibility, nadal można ich używać w implementacji IAccessibleEx dla kontrolek, które mają zarówno klucz dostępu, jak i akcelerator. Podobnie właściwość ControlType UI Automation nakłada się na właściwość Microsoft Active Accessibility accRole, ale nadal można jej używać w implementacji IAccessibleEx w celu zdefiniowania bardziej konkretnej roli dla kontrolki.

Ponieważ następujące właściwości elementu automatyzacji interfejsu użytkownika są już objęte właściwościami Microsoft Active Accessibility, nie ma potrzeby ich używać w implementacji IAccessibleEx .

Właściwość automatyzacji interfejsu użytkownika Odpowiednik ułatwień dostępu w usłudze Microsoft Active
WiązanieRektangle accLocation
HasKeyboardFocus accState, STATE_SYSTEM_FOCUSED
JestWłączony accState, STATE_SYSTEM_UNAVAILABLE
IsKeyboardFocusable accState, STATE_SYSTEM_FOCUSABLE
IsPassword accState, STATE_SYSTEM_PROTECTED
Tekst pomocy accHelp
Nazwa accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE STATE_SYSTEM_OFFSCREEN/
ProcessId Dostarczane przez rdzeń automatyzacji interfejsu użytkownika

 

W przypadku dowolnej nieobsługiwanej właściwości automatyzacji interfejsu użytkownika implementacja metody IRawElementProviderSimple::GetPropertyValue powinna ustawić parametr pRetVal na VT_EMPTY i zwrócić S_OK. Zwracanie UIA_E_NOTSUPPORTED może spowodować, że serwer proxy MSAA-to-UIA usunie domyślne mapowanie odpowiedniej właściwości.

Wzorce kontrolek

Następujące wzorce kontrolek automatyzacji interfejsu użytkownika nie nakładają się na funkcje microsoft Active Accessibility. Mogą one być używane w implementacji IAccessibleEx :

  • Stacja dokująca
  • Rozwińcollapse
  • Siatka
  • GridItem
  • MultipleView
  • RangeValue
  • Przewijać
  • ScrollItem
  • SyncdInput
  • Tabela
  • TableItem
  • Przekształć

W przypadku wzorców kontrolek RangeValue i Transform niektóre metody nakładają się między wzorcem kontrolki automatyzacji interfejsu użytkownika a metodami ułatwień dostępu Microsoft Active. W takich przypadkach oba muszą zostać zaimplementowane. Na przykład obie metody IAccessible::get_accValue i IAccessible::p ut_accValue muszą być zaimplementowane, podobnie jak metodyIRangeValue Automation IRangeValueProvider::Value i IRangeValueProvider::SetValue . Wewnętrznie implementacja może współużytkować kod. To wymaganie implementacji obu zestawów pozwala uniknąć częściowej implementacji interfejsu wzorca, zachowując jednocześnie możliwość użycia interfejsu IAccessible przez istniejących klientów dostępu Microsoft Active Accessibility.

Następujące wzorce sterowania automatyzacji interfejsu użytkownika nie są wymagane, gdy kontrolka ma jedną z ról opisanych poniżej; w przeciwnym razie powinny one być jawnie obsługiwane, jeśli jest to istotne.

Wzorzec kontrolki automatyzacji interfejsu użytkownika Rola microsoft Active Accessibility
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON i dowolną inną rolę, w której wartość właściwości accDefaultAction nie ma wartości NULL.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
WybórPattern ROLE_SYSTEM_LIST
Przełączpattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern ROLE_SYSTEM_TEXT (jeśli nie jest tylko do odczytu), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX i dowolną inną rolę, gdy wartość właściwości accValue nie ma wartości NULL.
OknoPattern Automatycznie obsługiwane na najwyższym poziomie usługi Microsoft Win32 HWNDs.

 

WinEvents dla zdarzeń zmienionych właściwości automatyzacji interfejsu użytkownika

Oprócz zdarzeń zdefiniowanych dla funkcji IAccessible są również zdefiniowane następujące identyfikatory zdarzeń i mogą być używane z implementacją IAccessibleEx jako zdarzenia zmienione właściwości dla odpowiednich właściwości automatyzacji interfejsu użytkownika. Korzystają one z tego samego mechanizmu co zdarzenia zdefiniowane dla funkcji IAccessible. Aby uzyskać więcej informacji, zobacz WinEvents.

Identyfikator WinEvent dla implementacji IAccessibleEx Powiązany identyfikator WinEvent z usługi Microsoft Active Accessibility
UIA_AriaPropertiesPropertyId Żaden
UIA_AriaRolePropertyId Żaden
UIA_ControllerForPropertyId Żaden
UIA_DescribedByPropertyId Żaden
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Żaden
UIA_InputDiscardedEventId Żaden
UIA_InputReachedOtherElementEventId Żaden
UIA_InputReachedTargetEventId Żaden
UIA_IsDataValidForFormPropertyId Żaden
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Żaden
UIA_MultipleViewCurrentViewPropertyId Żaden
UIA_ScrollHorizontallyScrollablePropertyId Żaden
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Żaden
UIA_ScrollVerticallyScrollablePropertyId Żaden
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Żaden
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

W przypadku zdarzeń powyżej, które mają wartość EVENT_OBJECT_ wymienioną po nich, a implementacja IAccessibleEx powinna wyzwalać to zdarzenie oprócz wymienionego zdarzenia zmienionego. Dzięki temu istniejący kod klienta IAccessibleEx będzie nadal działać, przekazując bardziej szczegółowe informacje o zdarzeniach dla zainteresowanych klientów.

WinEvents

interfejsu IAccessibleEx