Compartilhar via


Visão geral de TextPattern de automação da interface do usuário

Observação

Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de Automação de Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre Automação de Interface do Usuário, consulte API de Automação do Windows: Automação de Interface do Usuário.

Essa visão geral descreve como usar a Automação de Interface do Usuário da Microsoft para expor o conteúdo textual, incluindo atributos de formato e estilo, de controles de texto em plataformas compatíveis com a Automação da Interface do Usuário. Esses controles incluem, mas não se limitam a, o Microsoft .NET Framework TextBox e RichTextBox seus equivalentes win32.

Expor o conteúdo textual de um controle é feito por meio do uso do padrão de TextPattern controle, que representa o conteúdo de um contêiner de texto como um fluxo de texto. Por sua vez, TextPattern requer o suporte da classe TextPatternRange para expor atributos de formato e estilo. TextPatternRange dá suporte a TextPattern representando intervalos de texto contíguos ou múltiplos em um contêiner de texto com uma coleção de pontos de extremidade Start e End. TextPatternRange dá suporte a funcionalidades como seleção, comparação, recuperação e passagem.

Observação

As TextPattern classes não fornecem um meio de inserir ou modificar texto. No entanto, dependendo do controle, isso pode ser feito pela Automação ValuePattern da Interface do Usuário ou por meio da entrada direta do teclado. Veja o Exemplo de Inserção de Texto do TextPattern como referência.

A funcionalidade descrita nesta visão geral é vital para os fornecedores de tecnologia adaptativa e seus usuários finais. As tecnologias assistivas podem usar a Automação da Interface do Usuário para coletar informações completas de formatação de texto para o usuário e fornecer navegação programática e seleção de texto por TextUnit (caractere, palavra, linha ou parágrafo).

TextPattern da Automação da Interface do Usuário versus Text Services Framework

O TSF (Text Services Framework) é uma estrutura de sistema simples e escalonável que permite serviços de linguagem natural e entrada de texto avançado na área de trabalho e em aplicativos. Além de fornecer interfaces para aplicativos exporem seu repositório de texto, ele também dá suporte a metadados para esse repositório de texto.

No entanto, o TSF foi projetado para aplicativos que precisam injetar entrada em cenários com reconhecimento de contexto, enquanto TextPattern é uma solução somente leitura (com a solução alternativa limitada indicada acima) destinada a fornecer acesso otimizado a um repositório de texto para leitores de tela e dispositivos Braille.

Em resumo, tecnologias acessíveis que exigem acesso somente leitura a um repositório de texto podem usar TextPattern, mas necessitarão da funcionalidade mais complexa do TSF para entrada com reconhecimento de contexto.

Tipos de controle

Texto

O controle Texto é o elemento básico que representa uma parte do texto na tela.

Um controle de texto autônomo pode ser usado como um rótulo ou texto estático em um formulário. Os controles de texto também podem ser contidos dentro da estrutura de um ListItem, TreeItem ou DataItem.

Observação

Os controles de texto podem não aparecer na exibição de conteúdo da árvore de Automação da Interface do Usuário (consulte a Visão geral da árvore de automação da interface do usuário). Isso ocorre porque os controles de texto geralmente são exibidos por meio da propriedade Name de outro controle. Por exemplo, o texto usado para rotular um controle Editar é exposto por meio da propriedade Name do controle Editar. Como o controle Editar está na exibição de conteúdo da árvore de Automação da Interface do Usuário, não é necessário que o elemento de texto em si esteja nessa exibição da árvore de Automação da Interface do Usuário. O único texto que aparece na visualização de conteúdo é aquele que não são informações redundantes. Isso permite que qualquer tecnologia adaptativa filtre rapidamente apenas as informações de que seus usuários precisam.

Editar

Editar controles permite que um usuário exiba e edite uma única linha de texto.

Observação

A única linha de texto pode ser encapsulada em determinados cenários de layout.

Documento

Os controles de documento permitem que um usuário navegue e obtenha informações de várias páginas de texto.

APIs do cliente TextPattern

Tipo Descrição
Classe System.Windows.Automation.TextPattern O ponto de entrada para o modelo de texto da Automação da Interface do Usuário da Microsoft.

Essa classe também contém os dois ouvintes de eventos TextPattern, TextSelectionChangedEvent e TextChangedEvent.
Classe System.Windows.Automation.Text.TextPatternRange A representação de um intervalo de texto em um contêiner de texto que dá suporte a TextPattern.

Os clientes de Automação de Interface do Usuário devem ter cuidado com a validade atual de um intervalo de texto criado usando TextPatternRange. Se o texto original no controle de texto for completamente substituído pelo novo texto, o intervalo de texto atual se tornará inválido. No entanto, o intervalo de texto ainda poderá ter alguma viabilidade se apenas parte do texto original for alterada e o controle de texto subjacente estiver gerenciando seu "ponteiro" de texto com âncoras (ou pontos de extremidade) em vez de com o posicionamento absoluto de caracteres.

Os clientes podem escutar uma TextChangedEvent para ser notificados de alterações no conteúdo textual com o qual estão trabalhando.
Classe System.Windows.Automation.AutomationTextAttribute Usado para identificar os atributos de formatação de um intervalo de texto.

APIs do provedor TextPattern

Elementos ou controles de interface do usuário que suportam TextPattern ao implementar as interfaces ITextProvider e ITextRangeProvider, seja de forma nativa ou por meio de proxies de Automação da Interface do Usuário da Microsoft, são capazes de expor informações detalhadas de atributos para qualquer texto que contenham, além de fornecer robustas capacidades de navegação.

Um TextPattern provedor não precisará dar suporte a todos os atributos de texto se o controle não tiver suporte para atributos específicos.

Um provedor TextPattern deverá dar suporte às funções GetSelection e Select se o controle der suporte à seleção de texto ou ao posicionamento do cursor de texto (ou cursor do sistema) dentro da área de texto. Se o controle não oferecer suporte a essa funcionalidade, ele não precisará dar suporte a nenhum desses métodos. No entanto, o controle deve expor o tipo de seleção de texto que ele dá suporte implementando a SupportedTextSelection propriedade.

Um TextPattern provedor sempre deve dar suporte às TextUnit constantes Character e Document, bem como a qualquer outra TextUnit constante que seja capaz de suportar.

Observação

O provedor pode ignorar o suporte para um específico TextUnit recorrendo ao próximo maior TextUnit suportado na seguinte ordem: Character, Format, Word, Line, Paragraph, Page e Document.

API (Interface de Programação de Aplicativos) Descrição
Interface ITextProvider Expõe métodos, propriedades e atributos que dão suporte TextPattern a aplicativos cliente (consulte ITextProvider).
Interface ITextRangeProvider Representa um intervalo de texto em um provedor de texto (consulte ITextRangeProvider).
Classe System.Windows.Automation.TextPatternIdentifiers Contém valores usados como identificadores para provedores de texto (consulte TextPatternIdentifiers).

Segurança

A arquitetura de Automação da Interface do Usuário foi projetada com a segurança em mente (consulte a Visão geral da segurança da automação da interface do usuário). No entanto, as classes TextPattern descritas nesta visão geral exigem algumas considerações de segurança específicas.

  • Os provedores de texto da Automação da Interface do Usuário da Microsoft fornecem interfaces somente leitura e não fornecem a capacidade de alterar o texto existente em um controle.

  • Os clientes de Automação de Interface do Usuário só poderão usar a Automação de Interface do Usuário da Microsoft se forem totalmente "confiáveis". Um exemplo disso seria a Área de Trabalho de Logon protegida, em que somente aplicativos conhecidos e confiáveis podem ser executados.

  • Os desenvolvedores de provedores de Automação de Interface do Usuário devem estar cientes de que todas as informações que eles escolhem expor em seus controles por meio da Automação da Interface do Usuário da Microsoft são essencialmente públicas e totalmente acessíveis por outro código. A Automação da Interface do Usuário da Microsoft não faz nenhum esforço para determinar a confiabilidade de qualquer cliente de Automação de Interface do Usuário e, portanto, o provedor de Automação da Interface do Usuário não deve expor conteúdo protegido ou informações textuais confidenciais (como campos de senha).

  • Uma das alterações mais significativas na segurança do Windows Vista é amplamente conhecida como "Entrada Segura" que abrange tecnologias como LUA (contas de usuário com privilégios mínimos ou limitados) e UIPI (isolamento de nível de privilégio de interface do usuário).

    • A UIPI impede que um programa controle e/ou monitore outro programa mais "privilegiado", impedindo ataques de mensagens de janela entre processos que falsificam a entrada do usuário.

    • O LUA define limites sobre os privilégios dos aplicativos que estão sendo executados pelos usuários no grupo Administradores. Os aplicativos não necessariamente terão privilégios de administrador, mas serão executados com os privilégios mínimos necessários. Como consequência, pode haver algumas restrições impostas em cenários LUA. Principalmente, o truncamento de cadeias de caracteres (incluindo cadeias de caracteres TextPattern), em que pode ser necessário limitar o tamanho das cadeias de caracteres que estão sendo recuperadas de aplicativos no nível do administrador para que elas não sejam forçadas a alocar memória a ponto de desabilitar o aplicativo.

Desempenho

Como o TextPattern depende de chamadas entre processos para a maior parte de sua funcionalidade, ele não fornece um mecanismo de cache para melhorar o desempenho ao processar conteúdo. Isso é diferente de outros padrões de controle na Automação de Interface do Usuário da Microsoft que podem ser acessados usando os métodos GetCachedPattern ou TryGetCachedPattern.

Uma tática para melhorar o desempenho é garantir que os clientes de Automação de Interface do Usuário tentem recuperar blocos de texto de tamanho moderado usando GetText. Por exemplo, as chamadas GetText(1) incorrerão em acessos entre processos para cada caractere, enquanto uma chamada GetText(-1) incorrerá em um único acesso entre processos, mas pode ter alta latência dependendo do volume de dados do provedor de texto.

Terminologia textPattern

Atributo
Uma característica de formatação de um intervalo de texto (por exemplo, IsItalicAttribute ou FontNameAttribute).

Intervalo degenerado
Um intervalo degenerado é um intervalo de texto vazio ou de um único caractere. Para fins do padrão de controle TextPattern, o ponto de inserção de texto (ou cursor do sistema) é considerado um intervalo degenerado. Se nenhum texto for selecionado, GetSelection retornará um intervalo degenerado no ponto de inserção de texto e RangeFromPoint retornará um intervalo degenerado como seu ponto de extremidade inicial. RangeFromChild e GetVisibleRanges pode retornar intervalos degenerados quando o provedor de texto não encontrar intervalos de texto que correspondam à condição fornecida. Esse intervalo degenerado pode ser usado como um ponto de extremidade inicial dentro do provedor de texto. FindText e FindAttribute retorne uma referência nula (Nothing no Microsoft Visual Basic .NET) para evitar confusão com um intervalo descoberto versus um intervalo degenerado.

Objeto inserido
Há dois tipos de objetos inseridos no modelo de texto da Automação de Interface do Usuário. Eles consistem em elementos de conteúdo baseados em texto, como hiperlinks ou tabelas, e controlam elementos como imagens e botões. Para obter informações mais detalhadas, consulte Acessar Objetos Incorporados usando Automação de Interface.

Ponto de extremidade
O ponto Start ou End absoluto de um intervalo de texto dentro de um contêiner de texto.

TextPatternRangeEndpoints (início e término). O exemplo a seguir ilustra um conjunto de pontos de início e de término.

Intervalo de Texto
Uma representação de um intervalo de texto, com pontos de início e de término, em um contêiner de texto, incluindo todos os atributos e funcionalidades associados.

TextUnit
Uma unidade de texto predefinida (caractere, palavra, linha ou parágrafo) usada para navegar por segmentos lógicos de um intervalo de texto.

Consulte também