Dela via


Implementeringsriktlinjer för IAccessibleEx

Microsoft UI Automation-kärnan kan hämta alla Microsoft Active Accessibility-egenskaper för alla tillgängliga objekt som exponeras av en server via gränssnittet IAccessible. När du implementerar IAccessibleExmåste du endast exponera de aspekter av användargränssnittsfunktioner som annars inte kan exponeras via befintliga Microsoft Active Accessibility-egenskaper. Det här avsnittet identifierar egenskaper och kontrollmönster för användargränssnittsautomatisering som representerar användargränssnittsfunktioner som inte har någon motsvarighet i Microsoft Active Accessibility– de är de egenskaper och kontrollmönster som du kan exponera i en IAccessibleEx- implementering.

Det här avsnittet innehåller följande avsnitt:

Egenskaper

Följande UI Automation-egenskaper överlappar inte Microsoft Active Accessibility-funktionerna. De kan användas i en IAccessibleEx implementering:

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • Kultur
  • DescribedBy
  • FlowsTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • Orientering

Även om egenskaperna AcceleratorKey och AccessKey UI Automation överlappar egenskapen accKeyboardShortcut Microsoft Active Accessibility kan du fortfarande använda dem i en IAccessibleEx implementering för kontroller som har både en åtkomstnyckel och en accelerator. På samma sätt överlappar egenskapen ControlType UI Automation egenskapen Microsoft Active Accessibility accRole, men du kan fortfarande använda den i en IAccessibleEx implementering för att definiera en mer specifik roll för en kontroll.

Eftersom följande egenskaper för UI Automation-element redan omfattas av Microsoft Active Accessibility-egenskaper behöver du inte använda dem i en IAccessibleEx- implementering.

UI Automation-egenskap 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
Namn accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Tillhandahålls av UI Automation Core

 

För alla UI Automation-egenskaper som inte stöds bör din implementering av parametern IRawElementProviderSimple::GetPropertyValue ange parametern pRetVal till VT_EMPTY och returnera S_OK. Om du returnerar UIA_E_NOTSUPPORTED kan det leda till att MSAA-till-UIA-proxyn tar bort standardmappningen för motsvarande egenskap.

Kontrollmönster

Följande UI Automation-kontrollmönster överlappar inte Microsoft Active Accessibility-funktionerna. De kan användas i en IAccessibleEx implementering:

  • Docka
  • ExpandCollapse
  • Gitter
  • GridItem
  • MultipleView
  • RangeValue
  • Rulla
  • ScrollItem
  • SynchronizedInput
  • Bord
  • TableItem
  • Transformera

För kontrollmönstren RangeValue och Transformera överlappar vissa metoder mönstret för UI Automation-kontroll och Microsoft Active Accessibility-metoder. I dessa fall måste båda implementeras. Till exempel måste både Microsoft Active Accessibilitys IAccessible::get_accValue och IAccessible::p ut_accValue metoder implementeras, liksom UI AutomationIRangeValueProvider::Value och IRangeValueProvider::SetValue metoder. Internt kan en implementering dela kod för dessa. Det här kravet för att implementera båda uppsättningarna undviker en partiell implementering av ett mönstergränssnitt samtidigt som IAccessible- gränssnitt kan användas av befintliga Microsoft Active Accessibility-klienter.

Följande UI Automation-kontrollmönster krävs inte när kontrollen har en av rollerna som beskrivs nedan. annars bör de uttryckligen stödjas om det är relevant.

Kontrollmönster för användargränssnittsautomatisering Microsoft Active Accessibility Role
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTONoch andra roller där värdet för egenskapen accDefaultAction inte NULL-.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
VäxlaMönster ROLE_SYSTEM_CHECKBUTTON
ValuePattern ROLE_SYSTEM_TEXT (när den inte är skrivskyddad) ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOXoch andra roller när värdet för egenskapen accValue inte NULL-.
WindowPattern Stöds automatiskt på den översta nivån i Microsoft Win32 HWNDs.

 

WinEvents för UI Automation Property Changed Events

Förutom de händelser som definierats för IAccessibledefinieras även följande händelseidentifierare och kan användas med en IAccessibleEx implementering som egenskapsändringshändelser för motsvarande UI Automation-egenskaper. Dessa använder samma mekanism som de händelser som definierats för IAccessible. Mer information finns i WinEvents.

WinEvent ID för IAccessibleEx-implementeringar Relaterat WinEvent-ID från Microsoft Active Accessibility
UIA_AriaPropertiesPropertyId Ingen
UIA_AriaRolePropertyId Ingen
UIA_ControllerForPropertyId Ingen
UIA_DescribedByPropertyId Ingen
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Ingen
UIA_InputDiscardedEventId Ingen
UIA_InputReachedOtherElementEventId Ingen
UIA_InputReachedTargetEventId Ingen
UIA_IsDataValidForFormPropertyId Ingen
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Ingen
UIA_MultipleViewCurrentViewPropertyId Ingen
UIA_ScrollHorizontallyScrollablePropertyId Ingen
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Ingen
UIA_ScrollVerticallyScrollablePropertyId Ingen
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Ingen
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

För händelser ovan som har ett EVENT_OBJECT_ värde som anges efter dem, och IAccessibleEx implementering bör utlösa den här händelsen utöver den ändrade händelsen i listan. Detta gör att befintlig IAccessibleEx klientkod kan fortsätta att fungera, samtidigt som mer detaljerad händelseinformation förmedlas till intresserade klienter.

WinEvents

IAccessibleEx-gränssnittet