Freigeben über


Abfragen eines virtualisierten Elements in der Elementansicht

In diesem Thema wird beschrieben, wie Sie microsoft Benutzeroberflächenautomatisierung verwenden, um Benutzeroberflächeninformationen zu virtualisierten Elementen in der Windows 7-Elementansicht abzurufen. Das Thema enthält folgende Abschnitte:

Hinweis

Dieses Thema gilt nur für Windows 7. Beachten Sie, dass sich die in diesem Thema beschriebenen Barrierefreiheitsfeatures in zukünftigen Versionen von Windows ändern können.

 

Übersicht

Die Elementansicht ist eine Benutzeroberflächenkomponente, mit der Benutzer Dateien und andere Elemente anzeigen und mit ihnen interagieren können. In Windows 7 ersetzt die Elementansicht das Listenansicht-Steuerelement für die Darstellung von Elementen in der Standardansicht von Windows Explorer. Die Elementansicht wird auch im Dialogfeld "Allgemeine Elemente", in den Suchergebnissen im Startmenü und in anderen Windows 7-Ui-Elementen verwendet, die das steuerelement Explorer Browser verwenden. Im Vergleich zum Listenansichtssteuerelement bietet die Elementansicht den Benutzern die folgenden Vorteile:

  • Die Elementansicht kann Elemente auf eine Weise darstellen, die nützlicher, wünschenswerter und relevanter ist, sodass Benutzer Elemente einfacher, schneller und angenehmer finden und organisieren können.
  • In der Elementansicht können große Mengen von Elementen aus Datenquellen mit unterschiedlichen Leistungsmerkmalen angezeigt werden, sodass Benutzer ihre gesamte Sammlung von Elementen über mehrere Quellen hinweg durchsuchen und durchsuchen können.

Die folgende Abbildung zeigt die Elementansicht in Windows Explorer.

Screenshot: Windows-Explorer mit Elementansichtskomponente

Aus Der Sicht eines Entwicklers ähneln die allgemeine Struktur und Funktionalität der Elementansicht der des Listenansicht-Steuerelements. Der Standard Unterschied besteht darin, dass die Elementansicht Virtualisierung unterstützt, während das Listenansicht-Steuerelement dies nicht tut. Außerdem verwendet die Elementansicht zwei neue Benutzeroberflächenautomatisierung-Schnittstellen, um sicherzustellen, dass auf virtualisierte Inhalte, die von der Elementansicht bereitgestellt werden, zugegriffen werden kann. Diese Schnittstellen werden in den folgenden Abschnitten dieses Themas beschrieben.

Allgemeine Informationen zur Virtualisierung in Benutzeroberflächenautomatisierung finden Sie unter Arbeiten mit virtualisierten Elementen.

Struktur der Elementansicht

In der Benutzeroberflächenautomatisierung-Struktur hat die oberste Ebene Benutzeroberflächenautomatisierung Element der Elementansicht den Namen "ItemsView" und den Steuerelementtyp "list". In der vorherigen Abbildung ist das Element ItemsView Benutzeroberflächenautomatisierung rot umrissen. Unter der obersten Ebene von ItemsView sind verschiedene Benutzeroberflächenautomatisierung Elemente vorhanden, in diesem Dokument werden jedoch nur auf zwei weitere Benutzeroberflächenautomatisierung Elemente verwiesen: Gruppenelemente und Listenelemente.

Die Gruppenelemente sind die Benutzeroberflächenautomatisierung Elemente, die alle Listenelemente dieser Gruppe enthalten. Ihr Steuerelementtyp ist "Group" und ihre Namen variieren je nach Gruppennamen. In der vorherigen Abbildung enthält das erste Gruppenelement sowohl den Header "A-H (1)" als auch das Listenelement "Ordner", und sein Name lautet "A-H".

Die Listenelemente sind die Benutzeroberflächenautomatisierung Elemente, die die Blattelemente in der Ansicht darstellen. Ihr Steuerelementtyp ist "ListItem", und ihre Namen variieren je nach Elementnamen. In der vorherigen Abbildung sind die Listenelemente die Blattelemente wie "Ordner", "Musik" und "Bild". Auf diese drei Benutzeroberflächenautomatisierung Elemente wird im weiteren Verlauf dieses Dokuments durch die Begriffe ItemsView-Element, Group-Element und ListItem-Element verwiesen.

Virtualisierung

Die Elementansicht verwendet Virtualisierung. Dies bedeutet, dass Elemente außerhalb des sichtbaren Bereichs der Ansicht nicht aus dem System abgerufen und die Darstellung dieser Elemente nicht erstellt wird. Diese Elemente werden als virtualisierte Elemente bezeichnet. Da sie nicht erstellt werden, verfügen virtualisierte Elemente nicht über Benutzeroberflächenautomatisierung Elemente und werden daher nicht in der Benutzeroberflächenautomatisierung-Struktur angezeigt, wenn ein Benutzeroberflächenautomatisierung Client die Struktur aufzählt. Außerdem funktionieren Benutzeroberflächenautomatisierung Steuerelementmuster nur für sichtbare Elemente. Beispielsweise gibt das Selection-Steuerelementmuster nur die sichtbaren ausgewählten Elemente zurück, wenn ein Client die IUIAutomationSelectionPattern::GetCurrentSelection-Methode aufruft .

Die Elementansicht unterstützt die Möglichkeit, die folgenden Informationen zu virtualisierten Elementen abzurufen:

  • Eine Anzahl der Gesamtanzahl von Elementen, einschließlich virtualisierter Elemente
  • Benutzeroberflächenautomatisierung Elemente für virtualisierte Elemente
  • Benutzeroberflächenautomatisierung Elemente für die ausgewählten virtualisierten Elemente

Abrufen der Anzahl aller Elemente

Ein Client kann das ItemsView-Element verwenden, um die Anzahl aller Elemente sowie die Anzahl der ausgewählten Elemente abzurufen. Das ItemsView-Element bietet zwei Möglichkeiten, diese Anzahl abzurufen. Die erste besteht darin, die ItemStatus-Eigenschaft des ItemsView-Elements zu erhalten, und die zweite besteht darin, benutzerdefinierte Eigenschaften aus dem ItemsView-Element zu erhalten.

Die ItemStatus-Eigenschaft ist eine Zeichenfolge, die die Anzahl der Gesamtanzahl der Elemente und die Anzahl der ausgewählten Elemente durch ein Komma getrennt angibt. Beispiel: "3 Elemente, 1 Element ausgewählt". Diese Zeichenfolge ist lokalisiert und kann direkt an den Benutzer kommuniziert werden.

Die benutzerdefinierten Eigenschaften des ItemsView-Elements enthalten eine Eigenschaft für die Elementanzahl und eine weitere für die Auswahlanzahl. Dazu gehören:

  • ItemCount_Property_GUID (ABBF5C45-5CCC-47b7-BB4E-87CB87BBD162) – Die Anzahl aller eindeutigen Elemente in der Ansicht. Wenn sie nach einer mehrwertigen Eigenschaft (Multi-Value Property, MVP) gruppiert ist, sodass ein einzelnes Element mehrmals angezeigt werden kann, wird jedes Element nur einmal gezählt.

    (UIAutomationType: UIAutomationType_Int, Programmatic Name: "ItemCount")

  • SelectedItemCount_Property_GUID (92A053DA-2969-4021-BF27-514CFC2E4A69) – Die Anzahl aller in der Ansicht ausgewählten eindeutigen Elemente. Wenn sie nach einer mehrwertigen Eigenschaft (Multi-Value Property, MVP) gruppiert ist, sodass ein einzelnes Element mehrmals angezeigt werden kann, wird jedes Element nur einmal gezählt.

    (UIAutomationType: UIAutomationType_Int, Programmatic Name: "SelectedItemCount")

Diese benutzerdefinierten Eigenschaften werden in Shlguid.h definiert, die im Windows Software Development Kit (SDK) enthalten ist, und diese Eigenschaften werden über die IUIAutomationRegistrar::RegisterProperty-Methode registriert. Benutzeroberflächenautomatisierung Clients verwenden RegisterProperty, um Eigenschaftsbezeichner (PROPERTYIDs) für die benutzerdefinierten Eigenschaften abzurufen.

Abrufen eines Elementindexes in Bezug auf alle Elemente

Ein Client kann den Index eines Elements entweder durch Abrufen der ItemStatus-Eigenschaft eines ListItem-Elements oder durch Abrufen einer benutzerdefinierten Eigenschaft eines ListItem-Elements abrufen.

Die ItemStatus-Eigenschaft ist eine Zeichenfolge, die den Index eines Elements in Bezug auf die Gesamtzahl der Elemente enthält. Beispiel: "Element 1 von 3". Diese Zeichenfolge ist lokalisiert und kann direkt an den Benutzer kommuniziert werden.

Die folgende benutzerdefinierte Eigenschaft ruft den Elementindex eines ListItem-Elements ab:

  • ItemIndex_Property_GUID (92A053DA-2969-4021-BF27-514CFC2E4A69) – Der 1-basierte absolute Index eines Elements. Wenn sie nach einer mehrwertigen Eigenschaft (Multi-Value Property, MVP) gruppiert wird, sodass ein einzelnes Element zweimal angezeigt werden kann, erhält jede Darstellung des Elements einen separaten Index.

    (UIAutomationType: UIAutomationType_Int, Programmatic Name: "ItemIndex")

Diese benutzerdefinierte Eigenschaft wird in Shlguid.h definiert, die im Windows SDK enthalten ist, und wird über die IUIAutomationRegistrar::RegisterProperty-Methode registriert. Benutzeroberflächenautomatisierung Clients verwenden RegisterProperty, um einen Eigenschaftsbezeichner (PROPERTYIDs) für die benutzerdefinierte Eigenschaft abzurufen.

Abrufen eines Verweises auf ein vitualisiertes Element

Ein ItemsView-Element implementiert das ItemContainer-Steuerelementmuster (IItemContainerProvider-Schnittstelle), mit dem ein Client ein Benutzeroberflächenautomatisierung Element für ein virtualisiertes Element (ein Element außerhalb des sichtbaren Bereichs) abrufen kann. ItemsView ermöglicht es dem Client, ein ListItem-Element zu finden, indem er nach den Eigenschaften Name und Selection sucht. Der Versuch, nach einer anderen Eigenschaft zu suchen, schlägt fehl.

Ein virtuelles Element implementiert nur das VirtualizedItem-Steuerelementmuster (IVirtualizedItemProvider-Schnittstelle ). Da das Element, das durch ein virtualisiertes Benutzeroberflächenautomatisierung-Element dargestellt wird, noch nicht vorhanden ist, schlägt der Versuch, ein anderes Steuerelementmuster oder eine andere Eigenschaft des Elements abzurufen, fehl.

Sowohl ListItem- als auch Group-Elemente werden virtualisiert, aber nur ListItem-Elemente können vom ItemContainer-Steuerelementmuster zurückgegeben werden. Da der Aufruf der IUIAutomationItemContainerPattern::FindItemByProperty-Methode im UI-Thread ausgeführt und blockiert wird, antwortet die Ansicht erst, wenn FindItemByProperty zurückgegeben wird, und alle anderen Methodenaufrufe des Anbieters müssen warten, bis FindItemByProperty abgeschlossen ist. In einigen Fällen muss FindItemByProperty vor der Rückgabe das gesamte Dataset verarbeiten, was ressourcenintensiv sein kann. Die Angabe von NULL als Startelement bewirkt , dass FindItemByProperty die Suche mit dem ersten Element in der Ansicht beginnt.

ItemsView unterstützt die folgenden Eigenschaften für FindItemByProperty:

  • Name (UIA_NamePropertyId) – Sucht nach dem ersten Element, dessen Name vollständig mit der angegebenen Zeichenfolge übereinstimmt. Bei der Suche wird die Groß- und Kleinschreibung nicht berücksichtigt. Wildcardzeichen oder partielle Übereinstimmungen werden nicht unterstützt. Wenn ein NULL-Name angegeben wird, wird das nächste Element nach dem Startelement zurückgegeben. Die Angabe von NULL-Namen ermöglicht es einem Benutzeroberflächenautomatisierung Client, alle Elemente in der Ansicht aufzulisten. Es wird jedoch davon abgeraten, alle Elemente aufzulisten, da dadurch alle Elemente in der Ansicht realisiert werden.
  • SelectionItem_IsSelected (UIA_SelectionItemIsSelectedPropertyId) – Sucht nach dem ersten Element, dessen SelectionItem_IsSelected -Eigenschaft dem angegebenen Wert entspricht. Geben Sie TRUE an, um das erste ausgewählte Element zu suchen, oder FALSE , um das erste nicht ausgewählte Element zu finden. Seien Sie beim Auflisten aller ausgewählten Elemente vorsichtig, da die Anzahl der ausgewählten Elemente sehr groß sein kann, insbesondere wenn der Benutzer alle Elemente ausgewählt hat.

Scrollen eines virtualisierten Elements auf dem Bildschirm

Nachdem der Client einen Verweis auf ein Benutzeroberflächenautomatisierung-Element für ein virtualisiertes Element (off-screen) abgerufen hat, kann der Client das Element mithilfe der IUIAutomationVirtualizeItemPattern::Realize-Methode des VirtualizedItem-Steuerelementmusters in die Ansicht scrollen. Nachdem das Element realisiert wurde, ist es sichtbar, und alle Eigenschaften und Steuerelementmuster, die normalerweise einem ListItem-Element zugeordnet sind, sind für den Client verfügbar.

Nur ListItem-Elemente, die von der IUIAutomationItemContainerPattern::FindItemByProperty-Methode abgerufen werden, machen das VirtualizedItem-Steuerelementmuster verfügbar. Wenn ein Bildschirmelement aus dem Bildschirm gescrollt wird, wird das Element ungültig, und der Client muss FindItemByProperty aufrufen, um den Off-Screen-Verweis abzurufen.

Es ist auch möglich, Elemente mithilfe des Bildlauf-Steuerelementmusters (oder mithilfe der Bildlaufleisten) in die und aus der Ansicht zu verschieben. Elemente und Gruppen werden beim Scrollen in die Ansicht realisiert und beim Scrollen aus der Ansicht virtualisiert.

Arbeiten mit virtualisierten Elementen