Compartilhar via


Padrão de controle de invocação

Descreve diretrizes e convenções para implementar 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, em vez disso, iniciam ou executam uma única ação inequívoca.

Os controles que mantêm o estado, como caixas de seleção 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 contém 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 deverá 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 pressionamentos de teclas.

  • O evento Invoked event (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 gerado após o controle concluir a ação e retornado sem bloqueio. O evento Invoked (UIA_Invoke_InvokedEventId) deve ser acionado antes de atender à solicitação de 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 bloqueie 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, Invocar pode fazer com que outro controle seja selecionado.

  • Os efeitos de focalização (ou mouse-over) geralmente não constituem um evento de 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.

    Nota

    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 da seleção de um item. No entanto, dependendo do controle, invocá-lo pode 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 de Automação da Interface do Usuário da Microsoft 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 armazenadas em cache é a solução alternativa recomendada.

  • Os controles podem implementar vários padrões de controle. Por exemplo, o controle de 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 deIInvokeProvider.

Membros necessários Tipo de membro Anotações
invocar Método Invocar é 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 de 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 nenhuma propriedade ou eventos associados.

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

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

UIA_Invoke_InvokedEventId