Automação de Interface do usuário e Acessibilidade Microsoft Active
Era a solução anterior para tornar os aplicativos acessíveis. é o novo modelo de acessibilidade para Destina-se a atender às necessidades de produtos de tecnologia assistencial e ferramentas de teste automatizado. oferece vários aprimoramentos sobre .
Este tópico inclui os principais recursos do e explica como esses recursos diferem do .
Este tópico contém as seguintes seções.
- Linguagens de programação
- Suporte em Windows Presentation Foundation
- Servidores e clientes
- Elementos da Interface do Usuário
- Modos de Exibição de Árvore e navegação
- Funções e tipos de controle
- Estados e propriedades
- Eventos
- Segurança
- Tópicos relacionados
Linguagens de programação
Baseia a Com suporte para interfaces duplos e, portanto, é programável em C/C ++, Microsoft Visual Basic 6.0e as linguagens de script. (incluindo a biblioteca do lado do cliente do provedor para Controles Padrão) está escrito em código gerenciado, e Cliente de Automação interface do usuário aplicativos são programados com mais facilidade usando ou .Provedores de automação interface do usuárioQue São interface implementações, podem ser gravados em código gerenciado ou C/C ++.
Suporte em Windows Presentation Foundation
é o novo modelo para criar interfaces de usuário. Elementos não contêm suporte nativo para No entanto, eles oferecem suporte que inclui suporte para ponte Os clientes.Apenas clientes escritos especificamente para Podem aproveitar os recursos de acessibilidade Como suporte a rich para texto.
Servidores e clientes
Em servidores e clientes se comunicar diretamente, basicamente através da implementação do servidor do IAccessible.
Em Um serviço principal encontra-se entre o servidor (chamado de provedor) e o cliente.O serviço principal faz chamadas para as interfaces implementadas pelos provedores e fornece serviços adicionais, como gerar identificadores exclusivos de tempo de execução para elementos.Aplicativos cliente usam funções da biblioteca para chamar o o serviço.
Provedores de automação interface do usuário pode fornecer informações para Os clientes, e Os servidores podem fornecer informações para Cliente de Automação interface do usuário Os aplicativos.No entanto, como não expõe o máximo de informações Não os dois modelos são totalmente compatíveis.
Elementos da Interface do Usuário
Apresenta Elementos o como um IAccessible Interface ou como um identificador filho.É difícil comparar dois IAccessible Ponteiros para determinar se eles Consulte ao mesmo elemento.
Em Cada elemento é representado como um AutomationElement Objeto.Comparação é Concluído, usando o operador de igualdade ou [M:Sistema.Windows.Automation.Automationelemento.igual a(Sistema.Objeto)] Método, Ambos de que compare os identificadores exclusivos de tempo de execução dos elementos.
Modos de Exibição de Árvore e navegação
O elementos de tela podem ser vistos como um estrutura de árvore com a área de trabalho como a raiz, aplicativo Windows como filhos imediatos e elementos dentro de aplicativos como mais descendentes.
Em Muitos elementos de automação que são relevantes para os usuários finais são expostos na árvore.Aplicativos clientes precisam examinar todos os elementos para determinar quais são significativos.
Cliente de Automação interface do usuário aplicativos Consulte a por um filtro Exibir.O modo de exibição contém apenas elementos de seu interesse: aqueles que fornecem informações para o usuário ou permitem interação.Exibições de apenas elementos de Controlarar e somente conteúdos elementos predefinidos estão disponíveis; Além disso, aplicativos podem definir modos de exibição Personalizars. simplifica a tarefa de descrever o Para o usuário e ajudando ao usuário interagir com o aplicativo.
A navegação entre elementos, em é espacial (por exemplo, mover para o elemento que está à esquerda na tela), lógico (por exemplo, movendo para a próxima item de menu, ou o próximo item na Ordem de Tabulação em um caixa de diálogo), ou hierárquica (por exemplo, movendo o primeiro filho de um recipiente, ou de filho para seu pai).Hierarquia de navegação é complicada pelo fato que elementos filho nem sempre são objetos que implementam IAccessible.
Em Todos os Os elementos são AutomationElement Objetos que oferecem suporte a mesma Basic a funcionalidade.(Do ponto de vista do provedor, eles são objetos que implementam uma interface herdada IRawElementProviderSimple.) A navegação é principalmente hierárquica: de pais para filhos, e de um irmão para o próximo.(A navegação entre irmãos tem um elemento lógico, já que ela pode seguir a ordem de tabulação.) Você pode navegar de qualquer ponto inicial, usando qualquer exibição filtrada da árvore, usando o TreeWalker a classe.Você também pode navegar para determinado filhos ou descendentes usando FindFirst e FindAll; Por exemplo, é muito fácil recuperar Tudo elementos de uma caixa de diálogo que suportam um padrão do controle especificado.
Navegação no é mais consistente que em .Alguns elementos, como soltar - Para Baixo listas e janelas pop-up aparecem duas vezes na árvore e de navegação a partir deles podem ter resultados inesperados.É impossível realmente implementar corretamente Para um controle Rebar. Permite que reparenting e reposicionamento, para que um elemento pode ser colocado anyw aqui na árvore apesar da hierarquia imposta pela propriedade do Windows.
Funções e tipos de controle
Usa o accRole Propriedade (IAccessible::get_actRole para recuperar uma descrição da função do elemento in a Como ROLE_SYSTEM_Controle Deslizante ou ROLE_SYSTEM_MENUITEM.A função de um elemento é a dica principal à sua funcionalidade disponível.Interação com um controle é obtida usando fixo métodos como IAccessible::accSelect e IAccessible::accDoDefaultAction.A interação entre o aplicativo cliente e o está limitado ao que pode ser feito por meio IAccessible.
Em contraste, Basicamente dissocia o Tipo de controle do elemento (descrito pela ControlType() Propriedade) de sua funcionalidade esperada.A funcionalidade é determinada pelo Padrões de Controlarar que são suportados pelo provedor a sua implementação de interfaces especializadas.Padrões de controle podem ser combinados para descrever o conjunto completo de funcionalidade oferece suporte para um determinado Elemento.Requere-se que alguns provedores suportem um determinado padrão de controle; por exemplo, o provedor para uma caixa de seleção deve oferecer suporte o padrão de controle Ativar / Desativar.Requere-se que outros provedores suportem um ou mais de um conjunto de padrões de controle; por exemplo, um botão deve suporte Toggle ou Invoke.Ainda outros não suportam nenhum padrão de controle; por exemplo, um painel que não pode ser movido, redimensionado ou ancorado não tem qualquer padrão de controle.
oferecer suporte aos controles personalizados, que são identificados pela Custom() Propriedade e pode ser descrito pela LocalizedControlTypeProperty Propriedade.
A tabela a seguir mostra o mapeamento de Funções para Controlar os tipos.
Função |
Tipo de controle |
---|---|
ROLE_SYSTEM_PUSHBUTTON |
Button |
ROLE_SYSTEM_CLIENT |
Calendar |
ROLE_SYSTEM_CHECKBUTTON |
Caixa de seleção |
ROLE_SYSTEM_COMBOBOX |
"Caixa combo" |
ROLE_SYSTEM_CLIENT |
Personalizado |
ROLE_SYSTEM_LIST |
"Grade de dados" |
ROLE_SYSTEM_LISTITEM |
"Item de dados" |
ROLE_SYSTEM_DOCUMENT |
Document |
ROLE_SYSTEM_TEXT |
Editar |
ROLE_SYSTEM_GROUPING |
Group |
ROLE_SYSTEM_LIST |
Header |
ROLE_SYSTEM_COLUMNHEADER |
"Item de cabeçalho" |
ROLE_SYSTEM_LINK |
Hiperlink |
ROLE_SYSTEM_GRAPHIC |
Image |
ROLE_SYSTEM_LIST |
List |
ROLE_SYSTEM_LISTITEM |
"Item de lista" |
ROLE_SYSTEM_MENUPOPUP |
Menu |
ROLE_SYSTEM_MENUBAR |
"Barra de menu" |
ROLE_SYSTEM_MENUITEM |
Item do menu |
ROLE_SYSTEM_PANE |
Pane |
ROLE_SYSTEM_PROGRESSBAR |
Barra de progresso |
ROLE_SYSTEM_RADIOBUTTON |
"Botão Radio" |
ROLE_SYSTEM_SCROLLBAR |
"Barra de rolagem" |
ROLE_SYSTEM_SEPARATOR |
Separator |
ROLE_SYSTEM_SLIDER |
Slider |
ROLE_SYSTEM_SPINBUTTON |
Spinner |
ROLE_SYSTEM_SPLITBUTTON |
"Botão de split" |
ROLE_SYSTEM_STATUSBAR |
"Status bar" |
ROLE_SYSTEM_PAGETABLIST |
Tab |
ROLE_SYSTEM_PAGETAB |
Item de tab |
ROLE_SYSTEM_TABLE |
Tabela |
ROLE_SYSTEM_STATICTEXT |
Texto |
ROLE_SYSTEM_INDICATOR |
Thumb |
ROLE_SYSTEM_TITLEBAR |
"Barra de título" |
ROLE_SYSTEM_TOOLBAR |
"Tool bar" |
ROLE_SYSTEM_TOOLTIP |
Dica de Ferramenta |
ROLE_SYSTEM_OUTLINE |
Tree |
ROLE_SYSTEM_OUTLINEITEM |
Item de árvore |
ROLE_SYSTEM_WINDOW |
Janela |
Para obter mais informações sobre os tipos diferentes de controle, consulte Tipos de controle de automação de interface do usuário.
Estados e propriedades
Em Elementos oferecem suporte a um conjunto comum de algumas propriedades e (como accState deve descrever coisas muito diferentes, the Pendente na função do elemento.Os servidores devem implementar todos os métodos de IAccessible que retornam uma propriedade, mesmo aqueles que estão Não relevantes para o elemento.
Define muitos mais propriedades, alguns dos quais correspondem aos estados em .Alguns são Comum a todos os elementos, mas outras são específicas para tipos de controle e Padrões de Controlarar.As propriedades são distinguidas por identificadores exclusivos, e a maioria das propriedades podem ser recuperadas usando um Simples método, GetCurrentPropriedadeValor(AutomationPropriedade) ou GetCachedPropertyValue.Muitas propriedades são também recuperáveis facilmente a partir de Current e Cached Os assessores da propriedade.
A Interface do usuário de automação do provedor não possui a implementar propriedades irrelevantes, mas pode simplesmente retornar um Nulo Valor para as propriedades não dá suporte.Além disso, o Núcleo de serviço pode obter algumas propriedades do provedor janela padrão, e esses são amalgamated com propriedades explicitamente implementadas pelo provedor.
Assim como suporte muito mais propriedades, fornece melhor desempenho, permitindo que Múltiplo as propriedades para ser recuperado com um único processo cruzados chamada.
A tabela a seguir mostra a correspondência entre as propriedades nos dois modelos.
Propriedade assessor |
Propriedade Id |
Comentários |
---|---|---|
get_accKeyboardShortcut |
AccessKeyProperty tem precedência se ambos estiverem presentes. |
|
get_accName |
||
get_accRole |
Consulte a tabela anterior para mapeamento de funções para os tipos de controle. |
|
get_accValue |
[F:System.Windows.Automation.ValuePadrão.ValueProperty] |
Válido somente para tipos de controle que oferecem suporte a ValuePattern ou RangeValuePattern.Valores RangeValue são normalizados para 0-100, para ser consistente com comportamento MSAA.Itens de valor usam uma seqüência de caracteres. |
get_accHelp |
||
accLocation |
||
get_accDescription |
Não tem suporte no |
accDescription não tinha uma especificação limpar dentro MSAA, que resultou em provedores colocar partes diferentes de informações nessa propriedade. |
get_accHelpTopic |
Não tem suporte no |
A tabela a seguir mostra qual propriedades correspondem às Constantes de estado.
Estado |
property |
Mudança de estado de Triggers? |
---|---|---|
STATE_SYSTEM_CHECKED |
Para Caixa de seleção, ToggleStateProperty Para Rádio botão, IsSelectedProperty |
Y |
STATE_SYSTEM_COLLAPSED |
Y |
|
STATE_SYSTEM_EXPANDED |
Y |
|
STATE_SYSTEM_FOCUSABLE |
N |
|
STATE_SYSTEM_FOCUSED |
N |
|
STATE_SYSTEM_HASPOPUP |
ExpandCollapsePattern de itens de menu. |
N |
STATE_SYSTEM_INVISIBLE |
IsOffscreenProperty = Verdadeiro e GetClickablePoint Faz com que NoClickablePointException |
N |
STATE_SYSTEM_LINKED |
N |
|
STATE_SYSTEM_MIXED |
[P:System.Windows.Automation.TogglePadrão.TogglePadrãoInformation.ToggleState] = Indeterminate |
N |
STATE_SYSTEM_MOVEABLE |
N |
|
STATE_SYSTEM_MUTLISELECTABLE |
N |
|
STATE_SYSTEM_OFFSCREEN |
IsOffscreenProperty = True |
N |
STATE_SYSTEM_PROTECTED |
N |
|
STATE_SYSTEM_READONLY |
[F:System.Windows.Automation.RangeValuePadrão.IsReadOnlyProperty] e ValuePattern.IsReadOnlyProperty |
N |
STATE_SYSTEM_SELECTABLE |
SelectionItemPattern Há suporte para |
N |
STATE_SYSTEM_SELECTED |
N |
|
STATE_SYSTEM_SIZEABLE |
N |
|
STATE_SYSTEM_UNAVAILABLE |
IsEnabledProperty() |
Y |
Os seguintes estados ou não foram implementados por mais Controlar os servidores ou ter Não equivalente em .
Estado |
Comentários |
---|---|
STATE_SYSTEM_BUSY |
Não está disponível no |
STATE_SYSTEM_DEFAULT |
Não está disponível no |
STATE_SYSTEM_ANIMATED |
Não está disponível no |
STATE_SYSTEM_EXTSELECTABLE |
Não amplamente implementado por Os servidores |
STATE_SYSTEM_MARQUEED |
Não amplamente implementado por Os servidores |
STATE_SYSTEM_SELFVOICING |
Não amplamente implementado por Os servidores |
STATE_SYSTEM_TRAVERSED |
Não está disponível no |
STATE_SYSTEM_ALERT_HIGH |
Não amplamente implementado por Os servidores |
STATE_SYSTEM_ALERT_MEDIUM |
Não amplamente implementado por Os servidores |
STATE_SYSTEM_ALERT_LOW |
Não amplamente implementado por Os servidores |
STATE_SYSTEM_FLOATING |
Não amplamente implementado por Os servidores |
STATE_SYSTEM_HOTTRACKED |
Não está disponível no |
STATE_SYSTEM_PRESSED |
Não está disponível no |
Para obter uma lista completa de. Propriedade identificadores, consulte UI Automation Properties Overview.
Eventos
O mecanismo de eventos do Ao contrário que em não dependa de eventos do Windows roteamento (que é intimamente vinculado com alças janela) e não requer o aplicativo cliente para configurar ganchos.Inscrições para os eventos podem ser ajustadas não apenas para determinados eventos, mas para determinados partes da árvore.Provedores também podem fazer ajuste fino sua criação de eventos mantendo controle de quais eventos estão sendo atendidos.
Também é mais fácil para clientes recuperarem os elementos que geram eventos, já que estes são passados diretamente para a callback do evento.Propriedades do elemento são automaticamente pré-lidas se uma solicitação do cache foi ativa quando o cliente inscreveu-se para o evento.
A tabela a seguir mostra a correspondência de WinEventos e Os eventos.
WinEvent |
Identificador de evento |
---|---|
EVENT_OBJECT_ACCELERATORCHANGE |
AcceleratorKeyProperty Alterar a propriedade |
EVENT_OBJECT_CONTENTSCROLLED |
VerticalScrollPercentProperty ou HorizontalScrollPercentProperty Propriedade Alterar nas barras de rolagem associado |
EVENT_OBJECT_CREATE |
|
EVENT_OBJECT_DEFACTIONCHANGE |
Não há equivalente |
EVENT_OBJECT_DESCRIPTIONCHANGE |
Não há equivalente exato; Talvez HelpTextProperty ou LocalizedControlTypeProperty Alterar a propriedade |
EVENT_OBJECT_DESTROY |
|
EVENT_OBJECT_FOCUS |
|
EVENT_OBJECT_HELPCHANGE |
HelpTextProperty Alterar |
EVENT_OBJECT_HIDE |
|
EVENT_OBJECT_LOCATIONCHANGE |
BoundingRectangleProperty Alterar a propriedade |
EVENT_OBJECT_NAMECHANGE |
NameProperty Alterar a propriedade |
EVENT_OBJECT_PARENTCHANGE |
|
EVENT_OBJECT_REORDER |
Não consistentemente usado em .Nenhum evento diretamente correspondente é definido no . |
EVENT_OBJECT_SELECTION |
|
EVENT_OBJECT_SELECTIONADD |
|
EVENT_OBJECT_SELECTIONREMOVE |
|
EVENT_OBJECT_SELECTIONWITHIN |
Não há equivalente |
EVENT_OBJECT_SHOW |
|
EVENT_OBJECT_STATECHANGE |
Vários eventos de propriedade alterada |
EVENT_OBJECT_VALUECHANGE |
RangeValuePattern.ValueProperty e [F:System.Windows.Automation.ValuePadrão.ValueProperty] Alterado |
EVENT_SYSTEM_ALERT |
Não há equivalente |
EVENT_SYSTEM_CAPTUREEND |
Não há equivalente |
EVENT_SYSTEM_CAPTURESTART |
Não há equivalente |
EVENT_SYSTEM_CONTEXTHELPEND |
Não há equivalente |
EVENT_SYSTEM_CONTEXTHELPSTART |
Não há equivalente |
EVENT_SYSTEM_DIALOGEND |
|
EVENT_SYSTEM_DIALOGSTART |
|
EVENT_SYSTEM_DRAGDROPEND |
Não há equivalente |
EVENT_SYSTEM_DRAGDROPSTART |
Não há equivalente |
EVENT_SYSTEM_FOREGROUND |
|
EVENT_SYSTEM_MENUEND |
|
EVENT_SYSTEM_MENUPOPUPEND |
|
EVENT_SYSTEM_MENUPOPUPSTART |
|
EVENT_SYSTEM_MENUSTART |
|
EVENT_SYSTEM_MINIMIZEEND |
WindowVisualStateProperty Alterar a propriedade |
EVENT_SYSTEM_MINIMIZESTART |
WindowVisualStateProperty Alterar a propriedade |
EVENT_SYSTEM_MOVESIZEEND |
BoundingRectangleProperty Alterar a propriedade |
EVENT_SYSTEM_MOVESIZESTART |
BoundingRectangleProperty Alterar a propriedade |
EVENT_SYSTEM_SCROLLINGEND |
VerticalScrollPercentProperty ou HorizontalScrollPercentProperty Alterar a propriedade |
EVENT_SYSTEM_SCROLLINGSTART |
VerticalScrollPercentProperty ou HorizontalScrollPercentProperty Alterar a propriedade |
EVENT_SYSTEM_SOUND |
Não há equivalente |
EVENT_SYSTEM_SWITCHEND |
Não há equivalente, mas um AutomationFocusChangedEvent Evento sinaliza que um novo aplicativo tiver recebido o foco |
EVENT_SYSTEM_SWITCHSTART |
Não há equivalente |
Não há equivalente |
CurrentViewProperty Alterar a propriedade |
Não há equivalente |
ValueProperty Alterar a propriedade |
Não há equivalente |
HorizontallyScrollableProperty Alterar a propriedade |
Não há equivalente |
VerticallyScrollableProperty Alterar a propriedade |
Não há equivalente |
HorizontalScrollPercentProperty Alterar a propriedade |
Não há equivalente |
VerticalScrollPercentProperty Alterar a propriedade |
Não há equivalente |
HorizontalViewSizeProperty Alterar a propriedade |
Não há equivalente |
VerticalViewSizeProperty Alterar a propriedade |
Não há equivalente |
ToggleStateProperty Alterar a propriedade |
Não há equivalente |
[F:System.Windows.Automation.ValuePadrão.ValueProperty] Alterar a propriedade |
Não há equivalente |
WindowVisualStateProperty Alterar a propriedade |
Não há equivalente |
AsyncContentLoadedEvent Alterar a propriedade |
Não há equivalente |
Segurança
Alguns IAccessible Personalização cenários requerem Quebra Automática uma base IAccessible e chamada por meio para ele.Isso tem implicações de segurança, pois um componente parcialmente confiável não deve ser um intermediário em um caminho de código.
O modelo remove a necessidade para provedores para chamar a outro provedor código.O serviço principal não todos a agregação necessária.