Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Diese Dokumentation richtet sich an .NET Framework-Entwickler, die die verwalteten Benutzeroberflächenautomatisierungs-Klassen verwenden möchten, die im System.Windows.Automation-Namespace definiert sind. Die neuesten Informationen zur Benutzeroberflächenautomatisierung finden Sie unter Windows Automation API: Benutzeroberflächenautomatisierung.
In dieser Übersicht wird beschrieben, wie die Microsoft-Benutzeroberflächenautomatisierung eingebettete Objekte oder untergeordnete Elemente innerhalb eines Textdokuments oder Containers verfügbar macht.
Bei der Benutzeroberflächenautomatisierung ist ein eingebettetes Objekt jedes Element, das nicht textbezogene Grenzen aufweist; Beispielsweise ein Bild, ein Link, eine Tabelle oder ein Dokumenttyp, z. B. eine Microsoft Excel-Kalkulationstabelle oder eine Microsoft Windows Media-Datei. Dies unterscheidet sich von der Standarddefinition, bei der ein Element in einer Anwendung erstellt und eingebettet oder verknüpft ist. Ob das Objekt innerhalb der ursprünglichen Anwendung bearbeitet werden kann, ist im Kontext der Benutzeroberflächenautomatisierung irrelevant.
Eingebettete Objekte und die Benutzeroberflächenautomatisierungshierarchie
Eingebettete Objekte werden als einzelne Elemente in der Steuerelementansicht der Benutzeroberflächenautomatisierungs-Struktur behandelt. Sie werden als untergeordnete Elemente des Textcontainers verfügbar gemacht, sodass sie über dasselbe Modell wie andere Steuerelemente in der Benutzeroberflächenautomatisierung aufgerufen werden können.
Beispiel für einen Textcontainer mit eingebetteten Objekten "Tabelle", "Image" und "Hyperlink"
Beispiel der Inhaltsansicht eines Teils des vorigen Textcontainers
Verfügbarmachen eingebetteter Objekte mithilfe von TextPattern und TextPatternRange
Wird in Verbindung mit der TextPattern Steuerelementmusterklasse und der TextPatternRange Klasse verwendet, werden Methoden und Eigenschaften verfügbar gemacht, die die Navigation und Abfrage eingebetteter Objekte erleichtern.
Der textbezogene Inhalt (oder innerer Text) eines Textcontainers und eines eingebetteten Objekts, z. B. ein Link oder eine Tabellenzelle, wird als einzelner fortlaufender Textstrom sowohl in der Steuerelementansicht als auch in der Inhaltsansicht der Benutzeroberflächenautomatisierungs-Struktur verfügbar gemacht; Objektgrenzen werden ignoriert. Wenn ein UI Automation-Client den Text zum Zweck des Vorlesens, Interpretierens oder Analysierens in irgendeiner Weise abruft, sollte der Textbereich auf Sonderfälle überprüft werden, z. B. eine Tabelle mit Textinhalt oder andere eingebettete Objekte. Dies geschieht durch Aufrufen von GetChildren , um ein AutomationElement für alle eingebetteten Elemente abzurufen, und anschließend durch Aufrufen von RangeFromChild , um einen Textbereich für alle Elemente abzurufen. Dies erfolgt rekursiv, bis alle Textinhalte abgerufen wurden.
Beispiel für einen Textstream mit eingebetteten Objekten und deren Bereichsspannen
Wenn es erforderlich ist, den Inhalt eines Textbereichs zu durchlaufen, sind hinter den Kulissen eine Reihe von Schritten beteiligt, damit die Move Methode erfolgreich ausgeführt werden kann.
Der Textbereich wird normalisiert; d. h. der Textbereich wird auf einen degenerierten Bereich am Start Endpunkt reduziert, wodurch der End Endpunkt überflüssig wird. Dieser Schritt ist erforderlich, um Mehrdeutigkeit in Situationen zu entfernen, in denen ein Textbereich Grenzen umfasst, TextUnit z. B. wenn "{" und "}" die Endpunkte des Textbereichs
{The URL https://www.microsoft.com is embedded in textsind.Der resultierende Bereich wird im DocumentRange zurück an den Anfang der angeforderten TextUnit -Grenze verschoben.
Der Bereich wird um die angeforderte Anzahl von DocumentRange -Grenzen nach vorne oder nach hinten im TextUnit verschoben.
Der Bereich wird dann von einem degenerierten Bereichszustand erweitert, indem der End Endpunkt um eine angeforderte TextUnit Grenze verschoben wird.
Beispiele für die Anpassung eines Textbereichs für Move() und ExpandToEnclosingUnit()
Häufige Szenarien
In den folgenden Abschnitten werden Beispiele für die am häufigsten verwendeten Szenarien vorgestellt, die eingebettete Objekte umfassen.
Legende für die gezeigten Beispiele:
{ = Start
} = End
Verknüpfung
Beispiel 1 : Ein Textbereich, der einen eingebetteten Textlink enthält
{The URL https://www.microsoft.com is embedded in text}.
| Aufgerufene Methode | Ergebnis |
|---|---|
| GetText | Gibt die Zeichenfolge The URL https://www.microsoft.com is embedded in text zurück. |
| GetEnclosingElement | Gibt den innersten AutomationElement Wert zurück, der den Textbereich einschließt. In diesem Fall stellt dies AutomationElement den Textanbieter selbst dar. |
| GetChildren | Gibt ein AutomationElement Zurück, das das Hyperlink-Steuerelement darstellt. |
RangeFromChild dabei AutomationElement handelt es sich um das objekt, das von der vorherigen GetChildren Methode zurückgegeben wird. |
Gibt den Bereich zurück, der darstellt https://www.microsoft.com. |
Beispiel 2 : Ein Textbereich, der sich teilweise über einen eingebetteten Textlink erstreckt
Die URL https://{[www]} ist in Text eingebettet.
| Aufgerufene Methode | Ergebnis |
|---|---|
| GetText | Gibt die Zeichenfolge "www" zurück. |
| GetEnclosingElement | Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das Linksteuerelement. |
| GetChildren | Gibt zurück null , da der Textbereich nicht die gesamte URL-Zeichenfolge umfasst. |
Beispiel 3 : Ein Textbereich, der teilweise den Inhalt eines Textcontainers überspannt. Der Textcontainer verfügt über einen eingebetteten Textlink, der nicht Teil des Textbereichs ist.
{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.
| Aufgerufene Methode | Ergebnis |
|---|---|
| GetText | Gibt die Zeichenfolge "The URL" zurück. |
| GetEnclosingElement | Gibt den innersten AutomationElement Wert zurück, der den Textbereich einschließt. In diesem Fall stellt dies AutomationElement den Textanbieter selbst dar. |
| Move mit Parametern von (TextUnit.Word, 1). | Verschiebt den Textbereichsbereich auf "http", da der Text des Links aus einzelnen Wörtern besteht. In diesem Fall wird der Hyperlink nicht als einzelnes Objekt behandelt. Die URL {[http]} ist in Text eingebettet. |
Abbildung
Beispiel 1 : Ein Textbereich, der ein eingebettetes Bild enthält
{Das Bild
ist in Text eingebettet}.
| Aufgerufene Methode | Ergebnis |
|---|---|
| GetText | Gibt die Zeichenfolge "The ist in Text eingebettet" zurück. Jeder dem Bild zugeordnete ALT-Text kann nicht erwartet werden, dass er in den Textstream aufgenommen wird. |
| GetEnclosingElement | Gibt den innersten AutomationElement Wert zurück, der den Textbereich einschließt. In diesem Fall stellt dies AutomationElement den Textanbieter selbst dar. |
| GetChildren | Gibt ein AutomationElement zurück, das das Bildsteuerelement repräsentiert. |
| RangeFromChild dabei AutomationElement handelt es sich um das objekt, das von der vorherigen GetChildren Methode zurückgegeben wird. | Gibt den degenerierten Bereich zurück, der " " darstellt. |
Beispiel 2 : Ein Textbereich, der teilweise den Inhalt eines Textcontainers überspannt. Der Textcontainer verfügt über ein eingebettetes Image, das nicht Teil des Textbereichs ist.
{Das Bild}
ist in Text eingebettet.
| Aufgerufene Methode | Ergebnis |
|---|---|
| GetText | Gibt die Zeichenfolge "Das Bild" zurück. |
| GetEnclosingElement | Gibt den innersten AutomationElement Wert zurück, der den Textbereich einschließt. In diesem Fall stellt dies AutomationElement den Textanbieter selbst dar. |
| Move mit Parametern von (TextUnit.Word, 1). | Verschiebt den Textbereichsabschnitt nach „ist“. Da nur textbasierte eingebettete Objekte als Teil des Textstreams betrachtet werden, wirkt sich das Bild in diesem Beispiel nicht auf Move oder dessen Rückgabewert aus (1 in diesem Fall). |
Tabelle
Tabelle, die für Beispiele verwendet wird
| Zelle mit Bild | Zelle mit Text |
|---|---|
|
X |
) |
Ja |
)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 den AutomationElement Inhalt der Tabellenzelle zurück. In diesem Fall ist das Element ein Textsteuerelement. |
RangeFromChild dabei AutomationElement handelt es sich um das objekt, das von der vorherigen GetItem Methode zurückgegeben wird. |
Gibt den Bereich zurück, der das Bild umfasst. |
GetEnclosingElement für das von der vorherigen RangeFromChild Methode zurückgegebene Objekt. |
Gibt das AutomationElement zurück, das die Tabellenzelle darstellt; in diesem Fall ist das Element ein Textsteuerelement, das TableItemPattern unterstützt. |
GetEnclosingElement für das von der vorherigen GetEnclosingElement Methode zurückgegebene Objekt. |
Gibt das AutomationElement zurück, das die Tabelle repräsentiert. |
GetEnclosingElement für das von der vorherigen GetEnclosingElement Methode zurückgegebene Objekt. |
Gibt den AutomationElement zurück, der den Textanbieter selbst darstellt. |
Beispiel 2 : Abrufen des Textinhalts einer Zelle.
| Aufgerufene Methode | Ergebnis |
|---|---|
| GetItem mit Parametern von (1,1). | Gibt den AutomationElement Inhalt der Tabellenzelle zurück. In diesem Fall ist das Element ein Textsteuerelement. |
RangeFromChild dabei AutomationElement handelt es sich um das objekt, das von der vorherigen GetItem Methode zurückgegeben wird. |
Gibt "Y" zurück. |
Siehe auch
- TextPattern
- TextPatternRange
- ITextProvider
- ITextRangeProvider
- Zugreifen auf eingebettete Objekte mithilfe der Benutzeroberflächenautomatisierung
- Verfügbarmachen des Inhalts einer Tabelle mithilfe der Benutzeroberflächenautomatisierung
- Durchlaufen von Text mit Benutzeroberflächenautomatisierung
- TextPattern-Such- und Auswahlbeispiel
)
)