Compartilhar via


Verbos e associações de arquivos

Quando um usuário clica com o botão direito do mouse em um objeto Shell, como um arquivo, o Shell exibe um menu de atalho (contexto). Este menu contém uma lista de comandos que o usuário pode selecionar para executar várias ações no item. Esses comandos também são conhecidos como itens de menu de atalho ou verbos. Os menus de atalho podem ser personalizados.

Este tópico é organizado da seguinte maneira:

Introdução aos menus de atalho para objetos do sistema de arquivos

Como os menus de atalho geralmente são usados para o gerenciamento de arquivos, o Shell fornece um conjunto de comandos padrão, como Recortar e Copiar, que aparecem no menu de atalho para qualquer objeto do sistema de arquivos, como um arquivo ou uma pasta.

O exemplo a seguir ilustra um menu de atalho padrão exibido clicando com o botão direito do mouse em MyFile.xyz-ms.

captura de tela do menu de atalho padrão

O motivo pelo qual um menu de atalho padrão aparece para MyFile.xyz-ms é devido ao fato de que .xyz-ms não é membro de um tipo de arquivo registrado. Por outro lado, .txt é um tipo de arquivo registrado. Se você clicar com o botão direito do mouse em um arquivo.txt, verá um menu de atalho com três comandos adicionais em sua seção superior: Imprimir, Editar e Abrir com.

captura de tela do menu de atalho para um arquivo com um tipo de arquivo registrado

Para estender o menu de atalho para um tipo de arquivo, você deve criar uma entrada do Registro para cada comando. Uma abordagem mais sofisticada é implementar um manipulador de menu de atalho (verbo), que permite estender o menu de atalho para um tipo de arquivo em uma base arquivo por arquivo. Para obter mais informações, consulte Criando manipuladores de menu de contexto e Referência de menu de contexto.

Adicionar comandos a um menu de atalho

Um manipulador de menu de atalho é um manipulador de tipo de arquivo que adiciona comandos a um menu de atalho existente. Manipuladores de menu de atalho são associados a um tipo de arquivo e são chamados sempre que um menu de atalho é exibido para um membro da classe . O Shell verifica o registro para ver se o tipo de arquivo está associado a manipuladores de menu de atalho. Se for, o Shell consulta os manipuladores em busca de itens de menu de atalho adicionais.

Verbos do Menu de Atalho

Cada comando no menu de atalho é identificado no registro por seu verbo. Esses verbos são os mesmos usados pelo ShellExecuteEx ao iniciar aplicativos programaticamente.

Um verbo é uma cadeia de caracteres de texto simples que é usada pelo Shell para identificar o comando associado. Cada verbo corresponde à cadeia de caracteres de comando usada para iniciar o comando em uma janela do console ou arquivo de lote (.bat).

Por exemplo, o verbo aberto normalmente inicia um programa para abrir um arquivo. A cadeia de caracteres de comando normalmente tem a seguinte aparência:

"My Program.exe" "%1"

Se qualquer elemento da cadeia de caracteres de comando contiver ou puder conter espaços, ele deverá ser colocado entre aspas. Caso contrário, se o elemento contiver um espaço, ele não será analisado corretamente. Por exemplo, "Meu Program.exe" inicia o aplicativo corretamente. Se você usar Meu Program.exe sem aspas, o sistema tentará iniciar My com Program.exe como seu primeiro argumento de linha de comando. Você sempre deve usar aspas com argumentos como "%1" que são expandidos para cadeias de caracteres pelo Shell, porque você não pode ter certeza de que a cadeia de caracteres não conterá um espaço.

Os verbos também podem ter um nome de exibição associado a eles, que é exibido no menu de atalho em vez da própria cadeia de caracteres de verbo. Por exemplo, a cadeia de caracteres de exibição para openas é Open With. Assim como as cadeias de caracteres de menu normais, incluindo um caractere de e comercial na cadeia de caracteres de exibição permite a seleção de teclado do comando.

Transmitir itens do sistema que não são arquivos e resultados do OpenSearch.

No Windows 7 e posterior, há suporte para a conexão de fontes externas com o Cliente Windows por meio do protocolo OpenSearch . Isso permite que os usuários pesquisem um armazenamento de dados remoto e exibam os resultados de dentro do Windows Explorer. O padrão OpenSearch v1.1 define formatos de arquivo simples que podem ser usados para descrever como um cliente deve consultar o serviço Web para o armazenamento de dados e como o serviço deve retornar resultados a serem renderizados pelo cliente.

Talvez seja necessário transmitir itens do sistema que não sejam de arquivos para evitar a necessidade de baixar itens no caso de resultados do OpenSearch . O recurso de pesquisa federada permite pesquisar itens de locais do sistema que não são de arquivos que dão suporte ao OpenSearch, como o SharePoint e outros sites com suporte de serviços Web, por exemplo. Ao invocar verbos nesses itens, o sistema baixa uma versão temporária do item e passa-a para a implementação do verbo. Os implementadores de verbo são incentivados a evitar a necessidade de baixar o arquivo registrando o conjunto de esquemas de URL aos quais o verbo dá suporte para transmitir os itens. Os verbos fazem isso usando a chave do Registro SupportedProtocols .

Registrar um aplicativo para lidar com tipos de arquivo arbitrários

Definir itens de menu de atalho para um tipo de arquivo específico permite especificar como o aplicativo associado abre um membro do tipo de arquivo. No entanto, os aplicativos também podem registrar um procedimento padrão separado a ser usado quando um usuário tenta usar o aplicativo para abrir um tipo de arquivo que não está associado ao aplicativo. Você registra o procedimento padrão da mesma forma que registra itens de menu de atalho. Para obter informações mais detalhadas sobre como definir itens de menu de atalho, consulte Criando manipuladores de menu de contexto.

O procedimento padrão atende a duas finalidades básicas. Uma delas é especificar como seu aplicativo deve ser invocado para abrir um tipo de arquivo arbitrário. Você pode, por exemplo, usar um sinalizador de linha de comando para indicar que um tipo de arquivo desconhecido está sendo aberto. A outra finalidade é definir as várias características de um tipo de arquivo, como os itens de menu de atalho e o ícone. Se um usuário associar seu aplicativo a um tipo de arquivo adicional, essa classe terá essas características. Se o tipo de arquivo adicional tiver sido associado anteriormente a outro aplicativo, essas características substituirão os originais.

Para registrar o procedimento padrão, coloque as mesmas chaves do Registro que você criou para o ProgID do aplicativo na subchave do aplicativo de HKEY_CLASSES_ROOT\Applications. Você também pode incluir um valor FriendlyAppName para fornecer ao sistema um nome amigável para seu aplicativo. O nome amigável do aplicativo também pode ser extraído de seu arquivo executável, mas somente se o valor FriendlyAppName estiver ausente.

A entrada de registro de exemplo a seguir ilustra um procedimento padrão para MyProgram.exe que define um nome amigável e vários itens de menu de atalho. As cadeias de caracteres de comando incluem o sinalizador / a para notificar o aplicativo de que ele está abrindo um tipo de arquivo arbitrário. Se você incluir uma subchave DefaultIcon , deverá usar um ícone genérico.

HKEY_CLASSES_ROOT
   MyProgram.exe
      shell
         open
            command
               (Default) = C:\MyDir\MyProgram.exe /a "%1"
         print
            command
               (Default) = C:\MyDir\MyProgram.exe /a /p "%1"
         printto
            command
               (Default) = C:\MyDir\MyProgram.exe /a /p "%1" "%2"

Recursos adicionais

Práticas recomendadas para manipuladores de menu de atalho e vários verbos de seleção

Escolhendo um verbo estático ou dinâmico para o menu de atalho

Como Criar Manipuladores do Menu de Atalho

Personalizando um menu de atalho usando verbos dinâmicos

Menus de atalho (contexto) e manipuladores de menu de atalho

Referência do menu de atalho