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
- Steuerelementmuster
- WinEvents für Benutzeroberflächenautomatisierung Geänderte Ereignisse
- Zugehörige Themen
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.
Zugehörige Themen