Freigeben über


IAccessibleEx-Implementierungsrichtlinien

Der Microsoft Benutzeroberflächenautomatisierung Core kann alle Microsoft Active Accessibility-Eigenschaften für jedes zugängliche Objekt abrufen, das von einem Server über die IAccessible-Schnittstelle verfügbar gemacht wird. Bei der Implementierung von IAccessibleEx müssen Sie nur die Aspekte der Benutzeroberflächenfunktionalität verfügbar machen, die andernfalls nicht über vorhandene Microsoft Active Accessibility-Eigenschaften verfügbar gemacht werden können. In diesem Thema werden die Benutzeroberflächenautomatisierung Eigenschaften und Steuerelementmuster identifiziert, die Benutzeroberflächenfunktionen darstellen, die keine Entsprechung in Microsoft Active Accessibility aufweisen. Dies sind die Eigenschaften und Steuerelementmuster, die Sie in einer IAccessibleEx-Implementierung verfügbar machen können.

Dieses Thema enthält folgende Abschnitte:

Eigenschaften

Die folgenden Benutzeroberflächenautomatisierung Eigenschaften überschneiden sich nicht mit der Microsoft Active Accessibility-Funktionalität. Sie können in einer IAccessibleEx-Implementierung verwendet werden:

  • AriaProperties
  • AriaRole
  • AutomationID
  • ClassName
  • ClickablePoint
  • ControllerFor
  • Kultur
  • DescribedBy
  • FlowsTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • Isrequiredforform
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • Ausrichtung

Obwohl sich die Eigenschaften AcceleratorKey und AccessKey Benutzeroberflächenautomatisierung mit der accKeyboardShortcut Microsoft Active Accessibility-Eigenschaft überschneiden, können Sie sie dennoch in einer IAccessibleEx-Implementierung für Steuerelemente verwenden, die sowohl über einen Zugriffsschlüssel als auch über eine Zugriffstaste verfügen. Ebenso überschneidet sich die ControlType Benutzeroberflächenautomatisierung-Eigenschaft mit der AccRole-Eigenschaft von Microsoft Active Accessibility. Sie können sie jedoch weiterhin in einer IAccessibleEx-Implementierung verwenden, um eine spezifischere Rolle für ein Steuerelement zu definieren.

Da die folgenden Benutzeroberflächenautomatisierung Elementeigenschaften bereits von Microsoft Active Accessibility-Eigenschaften abgedeckt sind, ist es nicht erforderlich, sie in einer IAccessibleEx-Implementierung zu verwenden.

Benutzeroberflächenautomatisierungs-Eigenschaft 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
Name accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Bereitgestellt von Benutzeroberflächenautomatisierung Core

 

Für nicht unterstützte Benutzeroberflächenautomatisierung-Eigenschaft sollte ihre Implementierung der IRawElementProviderSimple::GetPropertyValue-Methode den Parameter pRetVal auf VT_EMPTY festlegen und S_OK zurückgeben. Die Rückgabe UIA_E_NOTSUPPORTED kann dazu führen, dass der MSAA-zu-UIA-Proxy die Standardzuordnung für die entsprechende Eigenschaft entfernt.

Steuerelementmuster

Die folgenden Benutzeroberflächenautomatisierung-Steuerelementmuster überschneiden sich nicht mit der Microsoft Active Accessibility-Funktionalität. Sie können in einer IAccessibleEx-Implementierung verwendet werden:

  • Dock
  • Erweitern_Reduzieren
  • Raster
  • GridItem
  • MultipleView
  • RangeValue
  • Scroll
  • ScrollItem
  • SynchronizedInput
  • Tabelle
  • TableItem
  • Transformieren

Bei den Steuerelementmustern RangeValue und Transform überschneiden sich einige Methoden zwischen dem Benutzeroberflächenautomatisierung-Steuerelementmuster und den Microsoft Active Accessibility-Methoden. In diesen Fällen müssen beide implementiert werden. Beispielsweise müssen sowohl die IAccessible::get_accValue- als auch die IAccessible::p ut_accValue-Methoden von Microsoft Active Accessibility sowie die Methoden Benutzeroberflächenautomatisierung IRangeValueProvider::Value und IRangeValueProvider::SetValue implementiert werden. Intern kann eine Implementierung Code für diese freigeben. Durch diese Anforderung zum Implementieren beider Sätze wird eine partielle Implementierung einer Musterschnittstelle vermieden, während die IAccessible-Schnittstelle von vorhandenen Microsoft Active Accessibility-Clients verwendet werden kann.

Die folgenden Benutzeroberflächenautomatisierung Steuerelementmuster sind nicht erforderlich, wenn das Steuerelement über eine der unten beschriebenen Rollen verfügt. Andernfalls sollten sie ggf. explizit unterstützt werden.

Benutzeroberflächenautomatisierung-Steuerelementmuster Microsoft Active Accessibility Role
Invokepattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON und jede andere Rolle, bei der der Wert der accDefaultAction-Eigenschaft nicht NULL ist.
Selectionitempattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
Selectionpattern ROLE_SYSTEM_LIST
TogglePattern ROLE_SYSTEM_CHECKBUTTON
Valuepattern ROLE_SYSTEM_TEXT (wenn es nicht schreibgeschützt ist), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX und jede andere Rolle, wenn der Wert der accValue-Eigenschaft nicht NULL ist.
WindowPattern Wird automatisch auf der obersten Ebene von Microsoft Win32 HWNDsunterstützt.

 

WinEvents für Benutzeroberflächenautomatisierung Geänderte Ereignisse

Zusätzlich zu den für IAccessible definierten Ereignissen werden auch die folgenden Ereignisbezeichner definiert und können mit einer IAccessibleEx-Implementierung als Eigenschaftsänderungsereignisse für entsprechende Benutzeroberflächenautomatisierung Eigenschaften verwendet werden. Diese verwenden denselben Mechanismus wie die für IAccessible definierten Ereignisse. Weitere Informationen finden Sie unter WinEvents.

WinEvent-ID für IAccessibleEx-Implementierungen Zugehörige WinEvent-ID von Microsoft Active Accessibility
UIA_AriaPropertiesPropertyId Keine
UIA_AriaRolePropertyId Keine
UIA_ControllerForPropertyId Keine
UIA_DescribedByPropertyId Keine
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Keine
UIA_InputDiscardedEventId Keine
UIA_InputReachedOtherElementEventId Keine
UIA_InputReachedTargetEventId Keine
UIA_IsDataValidForFormPropertyId Keine
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Keine
UIA_MultipleViewCurrentViewPropertyId Keine
UIA_ScrollHorizontallyScrollablePropertyId Keine
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Keine
UIA_ScrollVerticallyScrollablePropertyId Keine
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Keine
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Für die oben genannten Ereignisse, die einen EVENT_OBJECT_ Wert nach ihnen aufgeführt haben, und die IAccessibleEx-Implementierung sollte dieses Ereignis zusätzlich zum aufgelisteten geänderten Ereignis auslösen. Dadurch kann der vorhandene IAccessibleEx-Clientcode weiterhin funktionieren und gleichzeitig detailliertere Ereignisinformationen an interessierte Clients übermitteln.

WinEvents

Die IAccessibleEx-Schnittstelle