Linee guida per l'implementazione IAccessEx

Il core di Microsoft Automazione interfaccia utente può recuperare tutte le proprietà di Accessibilità attiva Microsoft per qualsiasi oggetto accessibile esposto da un server tramite l'interfaccia IAccessibile. Quando si implementa IAccessEx, è necessario esporre solo gli aspetti della funzionalità dell'interfaccia utente che non possono altrimenti essere esposti tramite le proprietà di Accessibilità Attiva Microsoft esistenti. In questo argomento vengono identificate le proprietà e i modelli di controllo Automazione interfaccia utente che rappresentano la funzionalità dell'interfaccia utente che non ha alcuna controparte in Microsoft Active Accessibility, ovvero le proprietà e i modelli di controllo che è possibile esporre in un'implementazione IAccessEx.

In questo argomento sono incluse le sezioni seguenti:

Proprietà

Le proprietà di Automazione interfaccia utente seguenti non si sovrappongono con la funzionalità Accessibilità attiva Microsoft. Possono essere usati in un'implementazione IAccessEx :

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • Impostazioni cultura
  • DescrittoBy
  • FlowTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • Orientamento

Anche se le proprietà acceleratorKey e AccessKey Automazione interfaccia utente si sovrappongono con la proprietà accKeyboardShortcut Microsoft Active Accessibility, è comunque possibile usarle in un'implementazione IAccessEx per i controlli con una chiave di accesso e un acceleratore. Analogamente, la proprietà ControlType Automazione interfaccia utente si sovrappone alla proprietà AccRole dell'accessibilità Microsoft Active, ma è comunque possibile usarla in un'implementazione IAccessEx per definire un ruolo più specifico per un controllo.

Poiché le proprietà dell'elemento Automazione interfaccia utente seguenti sono già coperte dalle proprietà di Accessibilità attiva Microsoft, non è necessario usarle in un'implementazione IAccessEx.

Proprietà di automazione interfaccia utente Equivalente all'accessibilità attiva Microsoft
BoundingRectangle accLocation
HasKeyboardFocus accState, STATE_SYSTEM_FOCUSED
IsEnabled accState, STATE_SYSTEM_UNAVAILABLE
IsKeyboardFocusable accState, STATE_SYSTEM_FOCUSABLE
IsPassword accState, STATE_SYSTEM_PROTECTED
HelpText accHelp
Nome accName
NativeWindowHandle WindowFromAccessObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE STATE_SYSTEM_OFFSCREEN/
ProcessId Fornito da Automazione interfaccia utente core

 

Per qualsiasi proprietà Automazione interfaccia utente non supportata, l'implementazione del metodo IRawElementProviderSimple::GetPropertyValue deve impostare il parametro pRetVal su VT_EMPTY e restituire S_OK. La restituzione di UIA_E_NOTSUPPORTED può causare la rimozione del mapping predefinito per la proprietà corrispondente da MSAA A-UIA Proxy.

Modelli di controllo

I modelli di controllo di Automazione interfaccia utente seguenti non si sovrappongono con la funzionalità Di accessibilità attiva Microsoft. Possono essere usati in un'implementazione IAccessEx :

  • Ancora
  • ExpandCollapse
  • Griglia
  • GridItem
  • MultipleView
  • RangeValue
  • Scroll
  • ScrollItem
  • SynchronizedInput
  • Tabella
  • TableItem
  • Trasformazione

Per i modelli di controllo RangeValue e Transform, alcuni metodi si sovrappongono tra il modello di controllo Automazione interfaccia utente e i metodi di accessibilità Microsoft Active. In questi casi, entrambi devono essere implementati. Ad esempio, entrambi i metodi IAccessi di Microsoft Active Accessibility::get_accValue e IAccess::p ut_accValue devono essere implementati, come devono essere implementati i metodi Automazione interfaccia utente IRangeValueProvider::Value e IRangeValueProvider::SetValue. Internamente, un'implementazione può condividere codice per questi elementi. Questo requisito per implementare entrambi i set evita di avere un'implementazione parziale di un'interfaccia pattern mantenendo l'interfaccia IAccessibile utilizzabile dai client Microsoft Active Accessibility esistenti.

I modelli di controllo seguenti Automazione interfaccia utente non sono necessari quando il controllo ha uno dei ruoli descritti di seguito. In caso contrario, devono essere supportati in modo esplicito se pertinente.

modello di controllo Automazione interfaccia utente Ruolo di accessibilità attiva Microsoft
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON e qualsiasi altro ruolo in cui il valore della proprietà accDefaultAction non è NULL.
Selectionitempattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
Selectionpattern ROLE_SYSTEM_LIST
Togglepattern ROLE_SYSTEM_CHECKBUTTON
Valuepattern ROLE_SYSTEM_TEXT (quando non è di sola lettura), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX e qualsiasi altro ruolo quando il valore della proprietà accValue non è NULL.
Windowpattern Supportato automaticamente in Microsoft Win32 HWNDs di primo livello.

 

WinEvents per gli eventi modificati della proprietà Automazione interfaccia utente

Oltre agli eventi definiti per IAccess, vengono definiti anche gli identificatori di evento seguenti e possono essere usati con un'implementazione IAccessEx come eventi modificati delle proprietà per le proprietà Automazione interfaccia utente corrispondenti. Questi usano lo stesso meccanismo degli eventi definiti per IAccessibile. Per altre informazioni, vedere WinEvents.

ID WinEvent per implementazioni IAccessEx ID WinEvent correlato da Microsoft Active Accessibility
UIA_AriaPropertiesPropertyId Nessuno
UIA_AriaRolePropertyId Nessuno
UIA_ControllerForPropertyId Nessuno
UIA_DescribedByPropertyId Nessuno
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Nessuno
UIA_InputDiscardedEventId Nessuno
UIA_InputReachedOtherElementEventId Nessuno
UIA_InputReachedTargetEventId Nessuno
UIA_IsDataValidForFormPropertyId Nessuno
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Nessuno
UIA_MultipleViewCurrentViewPropertyId Nessuno
UIA_ScrollHorizontallyScrollablePropertyId Nessuno
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Nessuno
UIA_ScrollVerticallyScrollablePropertyId Nessuno
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Nessuno
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Per gli eventi precedenti con un valore EVENT_OBJECT_ elencato dopo di esse e l'implementazione IAccessibleEx deve generare questo evento oltre all'evento modificato elencato. In questo modo, il codice client IAccessibleEx esistente può continuare a funzionare, trasmettendo al contempo informazioni sugli eventi più granulari ai client interessati.

WinEvents

Interfaccia IAccessibleEx