Freigeben über


Übersicht über TextPattern und eingebettete Objekte

HinweisHinweis

Diese Dokumentation ist für .NET Framework-Entwickler vorgesehen, die die verwalteten UI Automation-Klassen verwenden möchten, die im System.Windows.Automation-Namespace definiert sind.Aktuelle Informationen zu UI Automation finden Sie unter Windows Automation API: UI Automation.

In dieser Übersicht wird beschrieben, wie von Microsoft UI Automation eingebettete Objekte bzw. untergeordnete Elemente innerhalb eines Textdokuments oder eines Containers verfügbar gemacht werden.

Eingebettete Objekte sind in UI Automation alle Elemente mit Begrenzungen, die sich nicht auf Text beziehen, beispielsweise Bilder, Links, Tabellen oder Dokumenttypen, z. B. Microsoft Excel-Arbeitsblätter oder Microsoft Windows Media-Dateien. Dies ist ein Unterschied zur Standarddefinition, nach der ein Element in einer Anwendung erstellt und in einer anderen eingebettet bzw. verknüpft wird. Ob das Objekt innerhalb seiner ursprünglichen Anwendung bearbeitet werden kann, ist im Kontext von UI Automation irrelevant.

Dieses Thema enthält folgende Abschnitte.

  • Eingebettete Objekte und die Benutzeroberflächenautomatisierungs-Struktur
  • Verfügbarmachen von eingebetteten Objekten mithilfe von TextPattern und TextPatternRange
  • Häufige Szenarien
  • Verwandte Abschnitte

Eingebettete Objekte und die Benutzeroberflächenautomatisierungs-Struktur

Eingebettete Objekte werden als einzelne Elemente innerhalb der Steuerelementansicht der UI Automation-Struktur behandelt. Sie werden als untergeordnete Objekte des Textcontainers verfügbar gemacht, sodass auf sie über dasselbe Modell wie auf andere Steuerelemente in UI Automation zugegriffen werden kann.

 

Beispiel für einen Textcontainer mit Tabelle, Bild und Link als eingebettete Objekte

Eingebettete Tabelle mit Bild in einem Textcontainer

 

Beispiel der Inhaltsansicht für einen Teil des vorherigen Textcontainers

Inhaltsansicht für das vorherige Beispiel

Verfügbarmachen von eingebetteten Objekten mithilfe von TextPattern und TextPatternRange

Die Steuerelementmuster-Klasse TextPattern wird in Verbindung mit der TextPatternRange-Klasse verwendet, um Methoden und Eigenschaften verfügbar zu machen, die das Navigieren und Abfragen von eingebetteten Objekten erleichtern.

Der Textinhalt (oder innere Text) eines Textcontainers und ein eingebettetes Objekt, z. B. ein Link oder eine Tabellenzelle, werden in der Steuerelementansicht und der Inhaltsansicht der UI Automationsstruktur als einzelner, kontinuierlicher Textstream verfügbar gemacht, Objektgrenzen werden dabei ignoriert. Wenn ein Benutzeroberflächenautomatisierungs-Client den Text abruft, um ihn zu lesen, zu interpretieren oder zu analysieren, sollte der Textbereich auf bestimmte Fälle überprüft werden, z. B. auf Tabellen mit Textinhalt oder andere eingebettete Objekte. Dies kann durch das Abrufen von GetChildren, um ein AutomationElement für jedes eingebettete Objekt zu erhalten, und das anschließende Abrufen von RangeFromChild für den Textbereich jedes Elements erreicht werden. Dies wird rekursiv ausgeführt, bis der gesamte Textinhalt abgerufen wurde.

 

Beispiel für einen Textstream mit eingebetteten Objekten und deren Bereichsabschnitten

Von eingebetteten Objekten umfasste Textbereiche.

Wenn der Inhalt eines Textbereichs durchlaufen werden muss, ist eine Reihe von Hintergrundschritten erforderlich, um die Move-Methode erfolgreich auszuführen.

  1. Der Textbereich ist normalisiert, dies bedeutet, dass dieser auf einen degenerierten Bereich am Start-Endpunkt reduziert ist, wodurch der End-Endpunkt überflüssig wird. Dieser Schritt ist erforderlich, um eine Mehrdeutigkeit in Situationen zu beseitigen, in denen ein Textbereich die TextUnit-Grenzen überschreitet, z. B. "{Die U}RL https://www.microsoft.com ist in den Text eingebettet", wobei "{" und "}" die Endpunkte des Textbereichs darstellen.

  2. Der resultierende Bereich wird im DocumentRange rückwärts an den Anfang der angeforderten TextUnit-Grenze verschoben.

  3. Der Bereich wird im DocumentRange vorwärts oder rückwärts um die angeforderte Anzahl von TextUnit-Grenzen verschoben.

  4. Dann wird der Bereich von einem degenerierten Bereichszustand erweitert, indem der End-Endpunkt um eine angeforderte TextUnit-Grenze verschoben wird.

 

Beispiele für die Anpassung eines Textbereichs an Move() und ExpandToEnclosingUnit()

Bereichsberichtigung durch Move und ExpandToEnclosingUnit

Häufige Szenarien

In den folgenden Abschnitten sind Beispiele für die häufigsten Szenarien dargestellt, in denen eingebettete Objekte verwendet werden.

Legende für die dargestellten Beispiele:

{ = Start

} = End

Beispiel 1 – Ein Textbereich, der einen eingebetteten Textlink enthält

{Die URL https://www.microsoft.com ist in den Text eingebettet}.

 

Aufgerufene Methode

Ergebnis

GetText

Gibt die Zeichenfolge "Die URL https://www.microsoft.com ist in den Text eingebettet" zurück.

GetEnclosingElement

Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das AutomationElement, von dem der Textanbieter selbst dargestellt wird.

GetChildren

Gibt ein AutomationElement zurück, von dem das Link-Steuerelement dargestellt wird.

RangeFromChild, in dem AutomationElement das von der vorherigen GetChildren-Methode zurückgegebene Objekt ist.

Gibt den Bereich zurück, der "http://www.microsoft.com" darstellt.

 

Beispiel 2 – Ein Textbereich, der einen eingebetteten Textlink nur teilweise enthält

Die URL http://{www} ist in den Text eingebettet.

 

Aufgerufene Methode

Ergebnis

GetText

Gibt die Zeichenfolge "www" zurück.

GetEnclosingElement

Gibt das innerste AutomationElement zurück, das den Textbereich umfasst, in diesem Fall das Link-Steuerelement.

GetChildren

Gibt null zurück, da der Textbereich nicht die gesamte URL-Zeichenfolge umfasst.

 

Beispiel 3 – Ein Textbereich, der den Inhalt eines Textcontainers teilweise enthält. Der Textcontainer umfasst einen eingebetteten Textlink, der nicht im Textbereich enthalten ist.

{Die URL} https://www.microsoft.com ist in den Text eingebettet.

 

Aufgerufene Methode

Ergebnis

GetText

Gibt die Zeichenfolge "Die URL" zurück.

GetEnclosingElement

Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das AutomationElement, von dem der Textanbieter selbst dargestellt wird.

Move mit den Parametern (TextUnit.Word, 1).

Verschiebt den Textbereichsabschnitt nach "http", da der Text des Links aus einzelnen Wörtern besteht. In diesem Fall wird der Link nicht als einzelnes Objekt behandelt.

Die URL {http} ist in den Text eingebettet.

 

Bild

Beispiel 1 – Ein Textbereich, der ein eingebettetes Bild enthält

{Das Bild Beispiel für eingebettetes Bild ist in den Text eingebettet}.

 

Aufgerufene Methode

Ergebnis

GetText

Die Zeichenfolge "Das Bild ist in den Text eingebettet" wird zurückgegeben. Ein dem Bild zugeordneter Alternativtext (ALT) kann nicht im Textstream erwartet werden.

GetEnclosingElement

Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das AutomationElement, von dem der Textanbieter selbst dargestellt wird.

GetChildren

Gibt ein AutomationElement zurück, von dem das Bild-Steuerelement dargestellt wird.

RangeFromChild, in dem AutomationElement das von der vorherigen GetChildren-Methode zurückgegebene Objekt ist.

Gibt den degenerierten Bereich zurück, von dem "Beispiel für eingebettetes Bild" dargestellt wird.

 

Beispiel 2 – Ein Textbereich, der den Inhalt eines Textcontainers teilweise enthält. Der Textcontainer umfasst ein eingebettetes Bild, das nicht im Textbereich enthalten ist.

{Das Bild} Beispiel für eingebettetes Bild ist in den Text eingebettet.

 

Aufgerufene Methode

Ergebnis

GetText

Gibt die Zeichenfolge "Das Bild" zurück.

GetEnclosingElement

Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das AutomationElement, von dem der Textanbieter selbst dargestellt wird.

Move mit den Parametern (TextUnit.Word, 1).

Verschiebt den Textbereichsabschnitt nach "ist". Da nur textbasierte eingebettete Objekte als Teil des Textstreams betrachtet werden, hat das Bild in diesem Beispiel keine Auswirkungen auf das Verschieben oder dessen Rückgabewert (in diesem Fall 1).

Tabelle

Für Beispiele verwendete Tabelle

Zelle mit Bild

Zelle mit Text

Beispiel für eingebettetes Bild

X

Beispiel 2 für eingebettetes Bild

J

Beispiel 3 für eingebettetes Bild

Bild für Z

Z

 

Beispiel 1 – Abrufen des Textcontainers aus dem Inhalt einer Zelle.

 

Aufgerufene Methode

Ergebnis

GetItem mit den Parametern (0,0)

Gibt das AutomationElement zurück, von dem der Inhalt der Tabellenzelle dargestellt wird, in diesem Fall handelt es sich um ein Text-Steuerelement.

RangeFromChild, in dem AutomationElement das von der vorherigen GetItem-Methode zurückgegebene Objekt ist.

Gibt den Bereich zurück, in dem das Bild Beispiel für eingebettetes Bild enthalten ist.

GetEnclosingElement für das von der vorherigen RangeFromChild-Methode zurückgegebene Objekt.

Gibt das den Inhalt der Tabellenzelle darstellende AutomationElement zurück, in diesem Fall handelt es sich um ein Text-Steuerelement, von dem TableItemPattern unterstützt wird.

GetEnclosingElement für das von der vorherigen GetEnclosingElement-Methode zurückgegebene Objekt.

Gibt das AutomationElement zurück, von dem die Tabelle dargestellt wird.

GetEnclosingElement für das von der vorherigen GetEnclosingElement-Methode zurückgegebene Objekt.

Gibt das AutomationElement zurück, von dem der Textanbieter selbst dargestellt wird.

 

Beispiel 2 – Abrufen des Textinhalts einer Zelle.

 

Aufgerufene Methode

Ergebnis

GetItem mit den Parametern (1,1).

Gibt das AutomationElement zurück, von dem der Inhalt der Tabellenzelle dargestellt wird, in diesem Fall handelt es sich um ein Text-Steuerelement.

RangeFromChild, in dem AutomationElement das von der vorherigen GetItem-Methode zurückgegebene Objekt ist.

Gibt "Y" zurück.

Siehe auch

Aufgaben

Zugreifen auf eingebettete Objekte mit Benutzeroberflächenautomatisierung

Verfügbarmachen eines Tabelleninhalts durch Benutzeroberflächenautomatisierung

Durchlaufen von Text mit Benutzeroberflächenautomatisierung

TextPattern Search and Selection Sample

Referenz

TextPattern

TextPatternRange

ITextProvider

ITextRangeProvider