Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Deze documentatie is bedoeld voor .NET Framework-ontwikkelaars die de beheerde UI Automation-klassen willen gebruiken die zijn gedefinieerd in de System.Windows.Automation naamruimte. Zie Windows Automation-API: UI Automationvoor de meest recente informatie over UI Automation.
In dit overzicht wordt beschreven hoe Microsoft UI Automation ingesloten objecten of onderliggende elementen beschikbaar maakt in een tekstdocument of container.
In UI Automation is een ingesloten object elk element met niet-tekstuele grenzen; Bijvoorbeeld een afbeelding, hyperlink, tabel of documenttype, zoals een Microsoft Excel-spreadsheet of Microsoft Windows Media-bestand. Dit verschilt van de standaarddefinitie, waarbij een element wordt gemaakt in één toepassing en ingesloten, of gekoppeld, binnen een andere toepassing. Of het object kan worden bewerkt in de oorspronkelijke toepassing, is niet relevant in de context van UI Automation.
Ingesloten objecten en de automatiseringsstructuur van de gebruikersinterface
Ingesloten objecten worden behandeld als afzonderlijke elementen in de besturingsweergave van de UI Automation-structuur. Ze worden weergegeven als onderliggende elementen van de tekstcontainer, zodat ze toegankelijk zijn via hetzelfde model als andere besturingselementen in UI Automation.
Voorbeeld van een tekstcontainer met ingesloten tabel-, afbeeldings- en hyperlinkobjecten
Voorbeeld van de inhoudsweergave voor een gedeelte van de voorgaande tekstcontainer
Ingesloten objecten beschikbaar maken met TextPattern en TextPatternRange
Wordt in combinatie gebruikt, de TextPattern besturingspatroonklasse en de TextPatternRange klasse maken methoden en eigenschappen beschikbaar die navigatie en query's op ingesloten objecten mogelijk maken.
De tekstuele inhoud (of binnenste tekst) van een tekstcontainer en een ingesloten object, zoals een hyperlink of tabelcel, wordt weergegeven als één doorlopende tekststroom in zowel de besturingsweergave als de inhoudsweergave van de UI Automation-structuur; objectgrenzen worden genegeerd. Als een UI Automation-client de tekst ophaalt om tekst op een bepaalde manier te reciteren, interpreteren of analyseren, moet het tekstbereik worden gecontroleerd op speciale gevallen, zoals een tabel met tekstuele inhoud of andere ingesloten objecten. Dit kan worden bereikt door aan te roepen GetChildren om een AutomationElement voor elk ingesloten object te verkrijgen en vervolgens aan te roepen RangeFromChild om een tekstbereik voor elk element te verkrijgen. Dit wordt recursief gedaan totdat alle tekstuele inhoud is opgehaald.
Voorbeeld van een tekststroom met ingesloten objecten en de bijbehorende bereikbereiken
Wanneer het nodig is om de inhoud van een tekstbereik te doorlopen, wordt achter de schermen een reeks stappen uitgevoerd om de Move methode succesvol uit te voeren.
Het tekstbereik wordt genormaliseerd; Dat wil gezegd: het tekstbereik wordt samengevouwen tot een degenererend bereik op het Start eindpunt, waardoor het End eindpunt overbodig wordt. Deze stap is nodig om dubbelzinnigheid te verwijderen in situaties waarin een tekstbereik grenzen omvat TextUnit , bijvoorbeeld
{The URL https://www.microsoft.com is embedded in textwaarbij {en }de eindpunten van het tekstbereik zijn.Het resulterende bereik wordt verplaatst achterwaarts in de DocumentRange tot het begin van de aangevraagde TextUnit grens.
Het bereik wordt naar voren of naar achteren verplaatst in DocumentRange met het aangevraagde aantal TextUnit grenzen.
Het bereik wordt vervolgens uitgebreid vanuit een gedegenereerde toestand door het End eindpunt met één aangevraagde TextUnit grens te verplaatsen.
Voorbeelden van hoe een tekstbereik wordt aangepast voor Move() en ExpandToEnclosingUnit()
Veelvoorkomende scenario's
In de volgende secties ziet u voorbeelden van de meest voorkomende scenario's die betrekking hebben op ingesloten objecten.
Legenda voor de weergegeven voorbeelden:
{ = Start
} = End
Hyperlink
Voorbeeld 1: een tekstbereik dat een ingesloten teksthyperlink bevat
{The URL https://www.microsoft.com is embedded in text}.
| Methode aangeroepen | Resultaat |
|---|---|
| GetText | Retourneert de tekenreeks The URL https://www.microsoft.com is embedded in text. |
| GetEnclosingElement | Retourneert het binnenste AutomationElement-element dat het tekstbereik omsluit; in dit geval de AutomationElement die de tekstprovider zelf vertegenwoordigt. |
| GetChildren | Retourneert een AutomationElement dat het hyperlinkcontrolerepresenteert. |
RangeFromChild waar AutomationElement is het object dat door de vorige GetChildren methode wordt geretourneerd. |
Retourneert het bereik dat vertegenwoordigt https://www.microsoft.com. |
Voorbeeld 2: een tekstbereik dat gedeeltelijk een ingesloten teksthyperlink omvat
De URL https://{[www]} is ingesloten in tekst.
| Methode aangeroepen | Resultaat |
|---|---|
| GetText | Retourneert de tekenreeks "www". |
| GetEnclosingElement | Retourneert het binnenste AutomationElement dat het tekstbereik omhult; in dit geval de hyperlinkcontrole. |
| GetChildren | Retourneert null omdat het tekstbereik niet de volledige URL-tekenreeks omvat. |
Voorbeeld 3: een tekstbereik dat gedeeltelijk de inhoud van een tekstcontainer omvat. De tekstcontainer heeft een ingesloten teksthyperlink die geen deel uitmaakt van het tekstbereik.
{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.
| Methode aangeroepen | Resultaat |
|---|---|
| GetText | Retourneert de tekenreeks 'De URL'. |
| GetEnclosingElement | Retourneert het binnenste AutomationElement-element dat het tekstbereik omsluit; in dit geval de AutomationElement die de tekstprovider zelf vertegenwoordigt. |
| Move met parameters van (TextUnit.Word, 1). | Hiermee verplaatst u het bereik naar http omdat de tekst van de hyperlink bestaat uit afzonderlijke woorden. In dit geval wordt de hyperlink niet behandeld als één object. De URL {[http]} is ingesloten in tekst. |
Afbeelding
Voorbeeld 1: een tekstbereik dat een ingesloten afbeelding bevat
{De afbeelding
is ingesloten in de tekst}.
| Methode aangeroepen | Resultaat |
|---|---|
| GetText | Retourneert de tekenreeks 'De is ingesloten in tekst'. Alle ALTERNATIEVE tekst die aan de afbeelding is gekoppeld, kan niet worden verwacht in de tekststroom te worden opgenomen. |
| GetEnclosingElement | Retourneert het binnenste AutomationElement-element dat het tekstbereik omsluit; in dit geval de AutomationElement die de tekstprovider zelf vertegenwoordigt. |
| GetChildren | Retourneert een AutomationElement dat het besturingselement voor de afbeelding vertegenwoordigt. |
| RangeFromChild waar AutomationElement is het object dat door de vorige GetChildren methode wordt geretourneerd. | Retourneert het degeneratieve bereik dat staat voor " ". |
Voorbeeld 2: een tekstbereik dat gedeeltelijk de inhoud van een tekstcontainer omvat. De tekstcontainer heeft een ingesloten afbeelding die geen deel uitmaakt van het tekstbereik.
{De afbeelding}
is ingesloten in tekst.
| Methode aangeroepen | Resultaat |
|---|---|
| GetText | Retourneert de string "De afbeelding". |
| GetEnclosingElement | Retourneert het binnenste AutomationElement-element dat het tekstbereik omsluit; in dit geval de AutomationElement die de tekstprovider zelf vertegenwoordigt. |
| Move met parameters van (TextUnit.Word, 1). | Hiermee stelt u het tekstbereik in op 'is'. Omdat alleen ingesloten objecten op basis van tekst als onderdeel van de tekststroom worden beschouwd, heeft de afbeelding in dit voorbeeld geen invloed op Verplaatsen of de retourwaarde (1 in dit geval). |
Tabel
Tabel die wordt gebruikt voor voorbeelden
| Cel met afbeelding | Cel met tekst |
|---|---|
|
X |
|
Ja |
Afbeelding voor Z |
Z |
Voorbeeld 1: de tekstcontainer ophalen uit de inhoud van een cel.
| Methode aangeroepen | Resultaat |
|---|---|
| GetItem met parameters (0,0) | Retourneert de AutomationElement inhoud van de tabelcel. In dit geval is het element een tekstbesturing. |
RangeFromChild waar AutomationElement is het object dat door de vorige GetItem methode wordt geretourneerd. |
Retourneert het bereik dat de beslaat. |
GetEnclosingElement voor het object dat door de vorige RangeFromChild methode wordt geretourneerd. |
Retourneert de AutomationElement weergave van de tabelcel. In dit geval is het element een tekstbesturing die ondersteuning biedt voor TableItemPattern. |
GetEnclosingElement voor het object dat door de vorige GetEnclosingElement methode wordt geretourneerd. |
Retourneert de AutomationElement representatie van de tabel. |
GetEnclosingElement voor het object dat door de vorige GetEnclosingElement methode wordt geretourneerd. |
Retourneert de AutomationElement die de tekstprovider zelf vertegenwoordigt. |
Voorbeeld 2: de tekstinhoud van een cel ophalen.
| Methode aangeroepen | Resultaat |
|---|---|
| GetItem met parameters van (1,1). | Retourneert de AutomationElement inhoud van de tabelcel. In dit geval is het element een tekstbesturing. |
RangeFromChild waar AutomationElement is het object dat door de vorige GetItem methode wordt geretourneerd. |
Retourneert 'Y'. |