Visão geral do TextPattern de automação da interface do usuário
Nota
Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de automação da interface do usuário gerenciadas definidas no System.Windows.Automation namespace. Para obter as informações mais recentes sobre a automação da interface do usuário, consulte API de automação do Windows: automação da interface do usuário.
Esta visão geral descreve como usar a Automação da Interface do Usuário da Microsoft para expor o conteúdo textual, incluindo atributos de formato e estilo, de controles de texto em plataformas suportadas pela Automação da Interface do Usuário. Esses controles incluem, mas não estão limitados a, o Microsoft .NET Framework TextBox e RichTextBox bem como seus equivalentes Win32.
A exposição do conteúdo textual de um controle é realizada através do uso do padrão de controle, que representa o conteúdo de um contêiner de texto como um fluxo de TextPattern texto. Por sua vez, TextPattern requer o apoio da classe para expor atributos de TextPatternRange formato e estilo. TextPatternRangeSuporta TextPattern representando extensões de texto separadas contíguas ou múltiplas em um contêiner de texto com uma coleção de e End pontos de Start extremidade. TextPatternRange suporta funcionalidades como seleção, comparação, recuperação e travessia.
Nota
As TextPattern classes não fornecem um meio para 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. Consulte o TextPattern Insert Text Sample para obter um exemplo.
A funcionalidade descrita nesta visão geral é vital para os fornecedores de tecnologia assistiva e seus usuários finais. As tecnologias assistenciais podem usar a automação da interface do usuário para reunir 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 de automação da interface do usuário vs. estrutura de serviços de texto
O Text Services Framework (TSF) é uma estrutura de sistema simples e escalável que permite serviços de linguagem natural e entrada de texto avançada na área de trabalho e em aplicativos. Além de fornecer interfaces para os aplicativos exporem seu armazenamento de texto, ele também suporta metadados para esse armazenamento de texto.
No entanto, o TSF foi projetado para aplicativos que precisam injetar entrada em cenários sensíveis ao contexto, enquanto TextPattern é uma solução somente leitura (com a solução alternativa limitada mencionada acima) destinada a fornecer acesso otimizado a um armazenamento de texto para leitores de tela e dispositivos Braille.
Em resumo, as tecnologias acessíveis que exigem acesso somente leitura a um armazenamento de texto podem usar TextPatterno , mas precisarão da funcionalidade mais complexa do TSF para entrada sensível ao contexto.
Tipos de controle
Texto
O controle Text é o elemento básico que representa um pedaço de 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 estar contidos na estrutura de um ListItem, TreeItem ou DataItem.
Nota
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 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 Edit é exposto por meio da propriedade Name do controle Edit. Como o controle Edit 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 exibição de conteúdo é o texto que não é informação redundante. Isso permite que qualquer tecnologia assistiva filtre rapidamente apenas as informações de que seus usuários precisam.
Editar
Os controles de edição permitem que um usuário visualize e edite uma única linha de texto.
Nota
A única linha de texto pode ser quebrada 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 | Description |
---|---|
System.Windows.Automation.TextPattern Classe |
O ponto de entrada para o modelo de texto Microsoft UI Automation. Essa classe também contém os dois TextPattern ouvintes TextSelectionChangedEvent de eventos e TextChangedEvent. |
System.Windows.Automation.Text.TextPatternRange Classe |
A representação de uma extensão de texto dentro de um contêiner de texto que suporta TextPattern. Os clientes de automação da interface do usuário devem ter cuidado com a validade atual de um intervalo de texto criado usando TextPatternRangeo . Se o texto original no controle de texto for completamente substituído por um novo texto, o intervalo de texto atual se tornará inválido. No entanto, o intervalo de texto ainda pode 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 ouvir uma TextChangedEvent notificação de quaisquer alterações no conteúdo textual com o qual estão trabalhando. |
System.Windows.Automation.AutomationTextAttribute Classe |
Usado para identificar os atributos de formatação de um intervalo de texto. |
APIs do provedor TextPattern
Os elementos ou controles da interface do usuário que suportam TextPattern a implementação das ITextProvider interfaces e ITextRangeProvider , nativamente 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 recursos de navegação robustos.
Um TextPattern provedor não precisa oferecer suporte a todos os atributos de texto se o controle não tiver suporte para atributos específicos.
Um TextPattern provedor deve suportar as funções e Select se o controle suportar a GetSelection seleção de texto ou o 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á oferecer suporte a nenhum desses métodos. No entanto, o controle deve expor o tipo de seleção de texto que ele suporta implementando a SupportedTextSelection propriedade.
Um TextPattern provedor deve sempre suportar as TextUnitCharacter constantes e Document bem como quaisquer outras TextUnit constantes que ele é capaz de suportar.
Nota
O provedor pode ignorar o suporte para um específico TextUnit adiando para o próximo maior TextUnit suportado na seguinte ordem: Character, Format, Word, , LineParagraph, Page, e Document.
API | Description |
---|---|
ITextProvider interface |
Expõe métodos, propriedades e atributos que oferecem suporte TextPattern em aplicativos cliente (consulte ITextProvider). |
ITextRangeProvider interface |
Representa uma extensão de texto em um provedor de texto (consulte ITextRangeProvider). |
System.Windows.Automation.TextPatternIdentifiers Classe |
Contém valores que são 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 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 Microsoft UI Automation fornecem interfaces somente leitura e não fornecem a capacidade de alterar o texto existente em um controle.
Os clientes de Automação da Interface do Usuário só podem usar a Automação da Interface do Usuário da Microsoft se forem totalmente "confiáveis". Um exemplo disso seria a Área de Trabalho de Logon protegida, onde apenas aplicativos conhecidos e confiáveis podem ser executados.
Os desenvolvedores de provedores de Automação da Interface do Usuário devem estar cientes de que todas as informações que escolherem 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 da 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 referida como "Entrada Segura", que engloba tecnologias como Contas de Usuário Menos Privilegiadas (ou Limitadas) (LUA) e Isolamento de Nível de Privilégio da Interface do Usuário (UIPI).
O UIPI impede que um programa controle e/ou monitore outro programa mais "privilegiado", impedindo ataques de mensagens de janela de processo cruzado que falsificam a entrada do usuário.
O LUA define limites para os privilégios dos aplicativos que estão sendo executados por usuários no grupo Administradores. Os aplicativos não terão necessariamente privilégios de administrador, mas serão executados com o mínimo de privilégios necessários. Como consequência, pode haver algumas restrições aplicadas em cenários de LUA. Mais notavelmente truncamento de cadeia de caracteres (incluindo cadeias de caracteres TextPattern), onde pode ser necessário limitar o tamanho das cadeias de caracteres que estão sendo recuperadas de aplicativos de nível de administrador para que eles não sejam forçados a alocar memória ao ponto de desabilitar o aplicativo.
Desempenho
Como o TextPattern depende de chamadas entre processos para a maioria de suas funcionalidades, 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 da interface do usuário da Microsoft que podem ser acessados usando os GetCachedPattern métodos ou TryGetCachedPattern .
Uma tática para melhorar o desempenho é garantir que os clientes de automação da interface do usuário tentem recuperar blocos de texto de tamanho moderado usando GetTexto . Por exemplo, as chamadas GetText(1) incorrerão em acertos de processo cruzado para cada caractere, enquanto uma chamada GetText(-1) incorrerá em um acerto de processo cruzado, mas pode ter alta latência dependendo do tamanho 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 zero caracteres. Para os 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 consegue encontrar nenhum intervalo de texto que corresponda à condição dada. Esse intervalo degenerado pode ser usado como um ponto de extremidade inicial dentro do provedor de texto. FindText e FindAttribute retornar uma referência nula (Nothing
no Microsoft Visual Basic .NET) para evitar confusão com um intervalo descoberto versus um intervalo degenerado.
Objeto incorporado
Há dois tipos de objetos incorporados no modelo de texto de Automação da Interface do Usuário. Eles consistem em elementos de conteúdo baseados em texto, como hiperlinks ou tabelas, e elementos de controle, como imagens e botões. Para obter informações mais detalhadas, consulte Acessar objetos incorporados usando a automação da interface do usuário.
Ponto final
O absoluto Start ou End ponto de um intervalo de texto dentro de um contêiner de texto.
O seguinte ilustra um conjunto de pontos de início e fim.
Intervalo de texto
Uma representação de uma extensão de texto, com pontos de início e fim, 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
- Padrões de controle de automação da interface do usuário para clientes
- Visão geral dos padrões de controle de automação da interface do usuário
- Visão geral da árvore de automação da interface do usuário
- Usar cache na automação da interface do usuário
- Suporte a padrões de controle em um provedor de automação de interface do usuário
- Mapeamento de padrões de controle para clientes de automação da interface do usuário
- Estrutura de Serviços de Texto