Padrão de controle de invocação

Descreve diretrizes e convenções para implementar o IInvokeProvider, incluindo informações sobre métodos. O padrão de controle Invoke é usado para dar suporte a controles que não mantêm o estado quando ativados, mas sim iniciam ou executam uma única ação inequívoca.

Os controles que mantêm o estado, como caixas de marcar e botões de opção, devem implementar IToggleProvider e ISelectionProvider, respectivamente. Para obter exemplos de controles que implementam esse padrão de controle, consulte Tipos de controle e seus padrões de controle com suporte.

Este tópico inclui as seções a seguir.

Diretrizes e convenções de implementação

Ao implementar o padrão de controle Invoke , observe as seguintes diretrizes e convenções:

  • Os controles implementam IInvokeProvider se o mesmo comportamento não for exposto por meio de outro provedor de padrão de controle. Por exemplo, se o método IUIAutomationInvokePattern::Invoke em um controle executar a mesma ação que o método IUIAutomationExpandCollapsePattern::Expand ou Collapse , o controle não deve implementar IInvokeProvider.

  • A invocação de um controle geralmente é executada clicando ou clicando duas vezes ou pressionando ENTER, um atalho de teclado predefinido ou alguma combinação alternativa de teclas.

  • O evento invoked (UIA_Invoke_InvokedEventId) é gerado em um controle que foi ativado (como uma resposta a um controle que executa sua ação associada). Se possível, o evento deve ser acionado depois que o controle tiver concluído a ação e retornado sem bloqueio. O evento Invoked (UIA_Invoke_InvokedEventId) deve ser gerado antes de atender à solicitação Invoke nos seguintes cenários:

    • Não é possível ou prático aguardar até que a ação seja concluída.
    • A ação requer interação do usuário.
    • A ação é demorada e fará com que o cliente de chamada seja bloqueado por um período significativo de tempo.
  • Se invocar o controle tiver efeitos colaterais significativos, esses efeitos colaterais deverão ser expostos por meio da propriedade HelpText . Por exemplo, embora IUIAutomationInvokePattern::Invoke não esteja associado à seleção, Invoke pode fazer com que outro controle seja selecionado.

  • Os efeitos hover (ou mouse-over) geralmente não constituem um evento Invocado . No entanto, os controles que executam uma ação (em vez de causar um efeito visual) com base no estado de foco devem dar suporte ao padrão de controle Invoke .

    Observação

    Essa implementação será considerada um problema de acessibilidade se o controle puder ser invocado apenas como resultado de um efeito colateral relacionado ao mouse.

  • Invocar um controle é diferente de selecionar um item. No entanto, dependendo do controle, a invocação dele poderá fazer com que o item seja selecionado como um efeito colateral. Por exemplo, invocar um item de lista de documentos do Microsoft Word na pasta Meus Documentos seleciona o item e abre o documento.

  • Um elemento pode desaparecer da árvore do Microsoft Automação da Interface do Usuário imediatamente após ser invocado. A solicitação de informações do elemento fornecido pelo retorno de chamada do evento pode falhar como resultado. A busca prévia de informações em cache é a solução alternativa recomendada.

  • Os controles podem implementar vários padrões de controle. Por exemplo, o controle Cor de Preenchimento na barra de ferramentas do Microsoft Excel implementa os padrões de controle Invoke e ExpandCollapse . O padrão de controle ExpandCollapse expõe o menu e o padrão de controle Invoke preenche a seleção ativa com a cor escolhida.

Membros necessários para IInvokeProvider

O método a seguir é necessário para implementar a interface IInvokeProvider .

Membros necessários Tipo de membro Observações
Invoke Método Invoke é uma chamada assíncrona e deve retornar imediatamente sem bloqueio.
Esse comportamento é particularmente crítico para controles que, direta ou indiretamente, iniciam uma caixa de diálogo modal quando invocado. Qualquer cliente de Automação da Interface do Usuário que instigou o evento permanecerá bloqueado até que a caixa de diálogo modal seja fechada.

Esse padrão de controle não tem propriedades ou eventos associados.

Tipos de controle e seus padrões de controle com suporte

Visão Geral de Padrões de Controle de Automação de Interface de Usuário

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

UIA_Invoke_InvokedEventId