Compartilhar via


Escolhendo um método de menu de atalho estático ou dinâmico

Este tópico é organizado da seguinte maneira:

Escolha um método verbal

É altamente recomendável que você implemente um menu de atalho usando um dos métodos de verbo estático.

Métodos verbais estáticos

Os verbos estáticos são os verbos mais simples de implementar, mas ainda fornecem uma funcionalidade avançada. Sempre escolha o método de menu de atalho mais simples que atenda às suas necessidades.

Verbo estático Descrição
CreateProcess com parâmetros de linha de comando Este é o meio mais simples e familiar de implementar um verbo estático. Um processo é invocado por meio de uma chamada para a função CreateProcess com os arquivos selecionados e quaisquer parâmetros opcionais passados como a linha de comando. Isso abre o arquivo ou a pasta.
Esse método tem as seguintes limitações:
  • O comprimento da linha de comando é limitado a 2000 caracteres, o que limita o número de itens que o verbo pode manipular.
  • Só pode ser usado com itens do sistema de arquivos.
  • Não permite a reutilização de um processo já em execução.
  • Requer que um executável seja instalado para lidar com o verbo.

IDropTarget do DropTarget/ Uma ativação de verbo baseada em COM significa que dá suporte à ativação in-proc ou out-of-proc. DropTarget/IDropTarget também dá suporte à reutilização de um manipulador já em execução quando a interface IDropTarget é implementada por um servidor local. Ele também expressa perfeitamente os itens por meio do objeto de dados empacotado e fornece uma referência à cadeia de sites de invocação para que você possa interagir com o invocador por meio do QueryService.
Windows 7 e posterior: IExecuteCommand O método de implementação mais direto. Como esse é um método de invocação baseado em COM (como DropTarget), essa interface dá suporte à ativação dentro e fora do processo. O verbo implementa IExecuteCommand e IObjectWithSelection e, opcionalmente, IInitializeCommand. Os itens são passados diretamente como uma matriz de itens do Shell e mais parâmetros do invocador estão disponíveis para a implementação do verbo, incluindo o ponto de invocação, o estado do teclado e assim por diante.
Windows 7 e posterior:ExplorerCommand/ IExplorerCommand Permite que as fontes de dados que fornecem seus comandos de módulo de comando por meio de IExplorerCommandProvider usem esses comandos como verbos em um menu de atalho. Como essa interface dá suporte apenas à ativação em processo, ela é recomendada para uso por fontes de dados do Shell que precisam compartilhar a implementação entre comandos e menus de atalho.

 

Observação

IExplorerCommand é um híbrido entre um verbo estático e dinâmico. IExplorerCommand foi declarado no Windows Vista, mas sua capacidade de implementar um verbo em um menu de atalho é nova no Windows 7.

 

Para obter mais informações sobre consultas IDropTarget e Shell para atributos de associação de arquivo, consulte Tipos percebidos e registro de aplicativo.

Métodos de verbos dinâmicos preferidos

Os seguintes métodos de verbos dinâmicos são preferidos:

Tipo de verbo Descrição
Verbo estático (listado na tabela anterior) + Sintaxe de Consulta Avançada (AQS) Essa escolha obtém visibilidade dinâmica do verbo.
Windows 7 e posterior: IExplorerCommand Essa opção permite uma implementação comum de verbos e comandos do explorer que são exibidos no módulo de comando no Windows Explorer.
Windows 7 e posterior: IExplorerCommandState + verbo estático Essa escolha também obtém visibilidade dinâmica do verbo. É um modelo híbrido em que um manipulador simples em processo é usado para calcular se um determinado verbo estático deve ser exibido. Isso pode ser aplicado a todos os métodos de implementação de verbos estáticos para obter um comportamento dinâmico e minimizar a exposição da lógica em processo. IExplorerCommandState tem a vantagem de ser executado em um thread em segundo plano e, portanto, evita travamentos da interface do usuário. É consideravelmente mais simples do que IContextMenu.

 

Métodos de verbos dinâmicos desencorajados

IContextMenu é o método mais poderoso, mas também o mais complicado de implementar. Ele se baseia em objetos COM em processo que são executados no thread do chamador, que geralmente Windows Explorer, mas pode ser qualquer aplicativo que hospede os itens. IContextMenu dá suporte à visibilidade do verbo, ordenação e desenho personalizado. Alguns desses recursos foram adicionados aos recursos de verbo estático, como um ícone a ser associado a um comando e IExplorerCommand para lidar com a visibilidade.

Se você precisar estender o menu de atalho para um tipo de arquivo registrando um verbo dinâmico para o tipo de arquivo, siga as instruções fornecidas em Personalizando um menu de atalho usando verbos dinâmicos.

Estender um menu de atalho

Depois de escolher um método de verbo, você pode estender um menu de atalho para um tipo de arquivo registrando um verbo estático para o tipo de arquivo. Para obter mais informações, consulte Criando manipuladores de menu de contexto.

Suporte para métodos verbais por sistema operacional

O suporte para métodos de invocação de verbo por sistema operacional está listado na tabela a seguir.

Método do verbo Windows XP Windows Vista Windows 7 e além
CreateProcess X X X
DDE X X X
DropTarget X X X
ExecuteCommand X X
Comando do Explorador X
ExplorerCommandState X

 

Melhores Práticas para Manipuladores de Menu de Atalho e Vários Verbos de Seleção

Como Criar Manipuladores do Menu de Atalho

Personalizar um Menu de Atalho usando Verbos Dinâmicos

Menus de Atalho (Contexto) e Manipuladores de Menu de Atalho

Referência do Menu de Atalho

Associações de Verbos e Arquivos