Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Clicar com o botão direito do mouse em um objeto normalmente causa a exibição de um menu de atalho. Este menu contém uma lista de comandos que o usuário pode selecionar para executar várias ações no objeto. Esta seção é uma introdução aos menus de atalho para objetos do sistema de arquivos.
- Menus de atalho para objetos do sistema de arquivos
- Verbos do menu de atalho
- Estendendo o menu de atalho para um tipo de arquivo
- Estendendo o menu de atalho para objetos predefinidos Shell
- Registrando um aplicativo para lidar com tipos de arquivo arbitrários
- Estendendo o novo submenu
Informações adicionais estão disponíveis aqui:
Menus de atalho para objetos do sistema de arquivos
Quando um usuário clica com o botão direito do mouse em um objeto, como um arquivo, que é exibido no Windows Explorer ou na área de trabalho, um menu de atalho aparece com uma lista de comandos. Em seguida, o usuário pode executar uma ação no arquivo, como abri-lo ou excluí-lo, selecionando o comando apropriado.
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 arquivo. Observe que, embora Open With seja um comando padrão, ele não é exibido para alguns tipos de arquivo padrão, como .wav. A ilustração a seguir do diretório Meus Documentos de exemplo, que também foi usado como exemplo na Personalização de Ícones, mostra um menu de atalho padrão que foi exibido clicando com o botão direito do mouse em MyDocs4.xyz.
O motivo pelo qual MyDocs4.xyz mostra um menu de atalho padrão é que ele 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 dos arquivos .txt, verá um menu de atalho com dois comandos adicionais em sua seção superior: Abrir e Imprimir.
Depois que um tipo de arquivo é registrado, você pode estender seu menu de atalho com comandos adicionais. Eles são exibidos acima dos comandos padrão quando qualquer arquivo desse tipo é clicado com o botão direito do mouse. Embora a maioria dos comandos adicionados dessa forma sejam comuns, como Imprimir ou Abrir, você é livre para adicionar qualquer comando que um usuário possa achar útil.
Tudo o que é necessário para estender o menu de atalho para um tipo de arquivo é criar uma entrada do Registro para cada comando. Uma abordagem mais sofisticada é implementar um manipulador de menu de atalho, 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.
Verbos do menu de atalho
Cada comando no menu de atalho é identificado no registro por sua verb. Esses verbos são os mesmos usados por ShellExecuteEx ao iniciar aplicativos programaticamente. Para obter mais informações sobre o uso de ShellExecuteEx, consulte a discussão sobre como iniciar aplicativos.
A verb é uma cadeia de caracteres de texto simples que é usada pelo Shell comando para identificar o comando associado. Cada verb corresponde à string de comando usada para iniciar o comando em uma janela do console ou em um arquivo batch (.bat). Por exemplo, o openverb normalmente inicia um programa para abrir um arquivo. Normalmente, sua cadeia de caracteres de comando é semelhante a esta:
"My Program.exe" "%1"
"%1" é o espaço reservado padrão para um parâmetro de linha de comando fornecido com o nome do arquivo. Por exemplo, ele pode especificar uma página específica a ser exibida em um modo de exibição com guias.
Observação
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 analisará corretamente. Por exemplo, "Meu Program.exe" iniciará o aplicativo corretamente. Se você usar My Program.exe, 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 não se pode afirmar que a cadeia de caracteres não conterá um espaço.
Os verbos também podem ter uma cadeia de caracteres de exibição associada a eles, que é exibida no menu de atalho em vez da própria cadeia de caracteres verb. Por exemplo, a cadeia de caracteres de exibição para openas é Open With. Assim como strings de menu normais, incluir um e comercial (&) na string de exibição permite a seleção do comando usando o teclado.
Verbos canônicos
Em geral, os aplicativos são responsáveis por fornecer cadeias de caracteres de exibição localizadas para os verbos definidos por eles. No entanto, para fornecer um grau de independência de linguagem, o sistema define um conjunto padrão de verbos comumente usados chamados verbos canônicos. Um canônico verb pode ser usado com qualquer idioma e o sistema gera automaticamente uma cadeia de caracteres de exibição localizada corretamente. Por exemplo, a cadeia de caracteres de exibição do openverb será definida como Abrir em um sistema inglês e como Öffnen em um sistema alemão.
Os verbos canônicos incluem:
| Valor | Descrição |
|---|---|
| em aberto | Abre o arquivo ou a pasta. |
| opennew | Abre o arquivo ou a pasta em uma nova janela. |
| imprimir | Imprime o arquivo. |
| explorar | Abre o Windows Explorer com a pasta selecionada. |
| encontrar | Abre a caixa de diálogo Pesquisa do Windows com a pasta definida como o local de pesquisa padrão. |
| openas | Abre a caixa de diálogo Abrir com . |
| propriedades | Abre a folha de propriedades do objeto. |
O printto verb também é canônico, mas nunca é exibido. Ele permite que o usuário imprima um arquivo arrastando-o para um objeto de impressora.
Verbos Estendidos
Quando o usuário clica com o botão direito do mouse em um objeto, o menu de atalho contém todos os verbos normais. No entanto, pode haver comandos que você deseja dar suporte, mas que não foram exibidos em todos os menus de atalho. Por exemplo, você pode ter comandos que não são comumente usados ou destinados a usuários experientes. Por esse motivo, você também pode definir um ou mais verbos estendidos. Esses verbos também são cadeias de caracteres e são semelhantes aos verbos normais. Eles são distinguidos dos verbos normais pela maneira como são registrados. Para ter acesso aos comandos associados a verbos estendidos, o usuário deve clicar com o botão direito do mouse em um objeto enquanto pressiona a tecla SHIFT. Os verbos estendidos serão exibidos junto com os verbos normais.
Estendendo o menu de atalho para um tipo de arquivo
A maneira mais simples de estender o menu de atalho para um tipo de arquivo é com o Registro. Para fazer isso, adicione uma Shell subchave abaixo da chave para o ProgID do aplicativo associado ao tipo de arquivo. Opcionalmente, você pode definir um padrão verb para o tipo de arquivo tornando-o o valor padrão da Shell subchave.
O padrão verb é exibido primeiro no menu de atalho. Sua finalidade é fornecer ao Shell um verb para que ele possa usar quando ShellExecuteEx for chamado, mas não especificado um verb. O Shell não seleciona necessariamente o padrão verb quando ShellExecuteEx é usado dessa forma. Para Shellversões 5.0 e posteriores, encontradas no Windows 2000 e em sistemas posteriores, o Shell usa a primeira verb disponível na lista a seguir. Se nenhum estiver disponível, a operação falhará.
- O aberto verb
- O padrão verb
- O primeiro verb no registro
- O "openwith" verb
Para Shell versões anteriores à versão 5.0, omita o terceiro item.
Abaixo da Shell subchave, crie uma subchave para cada verb que você deseja adicionar. Cada uma dessas subchaves terá um valor REG_SZ definido pela cadeia de caracteres de exibição de verb. Você pode omitir a cadeia de caracteres de exibição para verbos canônicos porque o sistema exibirá automaticamente uma cadeia de caracteres localizada corretamente. Se você omitir a cadeia de caracteres de exibição para verbos não canônicos, a verb cadeia de caracteres será exibida. Para cada verb subchave, crie uma subchave comando com o valor padrão definido como a string de comando.
A ilustração a seguir mostra um menu de atalho para o tipo de arquivo .myp usado em Tipos de Arquivo e Ícones de Personalização. Agora contém os comandos "open," "doit," "print" e "printto" no menu de atalho, com "doit" como padrão verb. O menu de atalho tem esta aparência.
As entradas do Registro usadas para estender o menu de atalho mostrado na ilustração anterior são:
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
(Default) = MyProgram Application
Shell
(Default) = doit
open
command
(Default) = C:\MyDir\MyProgram.exe "%1"
doit
(Default) = &Do It
command
(Default) = C:\MyDir\MyProgram.exe /d "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /p "%1" "%2" %3 %4
Embora o comando Abrir com esteja acima do primeiro separador, ele é criado automaticamente pelo sistema e não requer uma entrada do Registro. O sistema cria automaticamente nomes de exibição para os verbos canônicos abrir e imprimir. Como o doit não é canônico verb, é atribuído um nome de exibição, "&Do It", que pode ser selecionado pressionando a tecla D. O printto verb não aparece no menu de atalho, mas incluí-lo permite que o usuário imprima arquivos soltando-os em um ícone de impressora. Neste exemplo, %1 representa o nome do arquivo e %2 o nome da impressora.
Os verbos podem ser suprimidos por meio de configurações de políticas ao adicionar um valor SuppressionPolicy à chave verb. Defina o valor de SuppressionPolicy como a ID da política. Se a política estiver ativada, a entrada do menu de atalho associada ao verb será suprimida. Para obter possíveis valores de ID de política, consulte a enumeração RESTRICTIONS .
Estendendo o menu de atalho para objetos predefinidos Shell
Muitos objetos predefinidos Shell têm menus de atalho que podem ser estendidos. Registre o comando da mesma maneira que você registra tipos de arquivo típicos, mas use o nome do objeto predefinido como o nome do tipo de arquivo.
Uma lista de objetos predefinidos pode ser encontrada na seção Objetos Predefinidos Shell de Criação Shell de Manipuladores de Extensão. Esses objetos predefinidos Shell cujos menus de atalho podem ser estendidos adicionando verbos no registro são marcados na tabela com a palavra "Verb".
Registrando um aplicativo para lidar com tipos de arquivo arbitrários
As seções anteriores deste documento discutiram como definir itens de menu de atalho para um tipo de arquivo específico. Entre outras coisas, definir o menu de atalho permite especificar como o aplicativo associado abre um membro do tipo de arquivo. No entanto, conforme discutido em Tipos de Arquivo, os aplicativos também podem registrar um procedimento padrão separado a ser usado quando um usuário tenta usar seu aplicativo para abrir um tipo de arquivo que você não associou ao aplicativo. Este tópico é discutido aqui porque você registra o procedimento padrão da mesma forma que registra itens de menu de atalho.
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, esse tipo 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 sob a subchave do aplicativo 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. O fragmento do Registro a seguir mostra um procedimento padrão de exemplo 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, deve usar um ícone genérico.
HKEY_CLASSES_ROOT
Applications
MyProgram.exe
FriendlyAppName = Friendly Name
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" %3 %4
Estendendo o novo submenu
Quando um usuário abre o menu Arquivo no Windows Explorer, o primeiro comando é Novo. Selecionar esse comando exibe um submenu. Por padrão, ele contém dois comandos, Pasta e Atalho, que permitem que os usuários criem subpastas e atalhos. Esse submenu pode ser estendido para incluir comandos de criação de arquivo para qualquer tipo de arquivo.
Para adicionar um comando de criação de arquivo ao novo submenu, os arquivos do aplicativo devem ter um tipo de arquivo associado a eles. Inclua uma subchave ShellNew na chave para a extensão de nome de arquivo. Quando o comando Novo do menu Arquivo for selecionado, Shell ele o adicionará ao submenu Novo. A cadeia de caracteres de exibição do comando será a cadeia de caracteres descritiva atribuída ao ProgID do programa.
Atribua um ou mais valores de dados à subchave ShellNew para especificar o método de criação de arquivo. Os valores disponíveis seguem.
| Valor | Descrição |
|---|---|
| Comando | Executa um aplicativo. Esse é um valor REG_SZ especificando o caminho do aplicativo a ser executado. Por exemplo, você pode defini-lo para iniciar um assistente. |
| Dados | Cria um arquivo que contém dados especificados. Os dados são um valor REG_BINARY com os dados do arquivo. Os dados serão ignorados se NullFile ou FileName for especificado. |
| Nome do Arquivo | Cria um arquivo que é uma cópia de um arquivo especificado. FileName é um valor REG_SZ , definido como o caminho totalmente qualificado do arquivo a ser copiado. |
| Arquivo Nulo | Cria um arquivo vazio. NullFile não recebe um valor. Se NullFile for especificado, os valores Data e FileName serão ignorados. |
A ilustração a seguir mostra o novo submenu para o tipo de arquivo .myp usado como exemplo em Tipos de Arquivo e Ícones de Personalização. Agora ele tem um comando, Aplicativo MyProgram. Quando um usuário seleciona o Aplicativo MyProgram no novo submenu, ele Shell cria um arquivo chamado "Novo Aplicativo MyProgram.myp" e o passa para MyProgram.exe.
A entrada do registro agora é a seguinte:
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
ShellNew
NullFile
MyProgram.1
(Default) = MyProgram Application
DefaultIcon
(Default) = C:\MyDir\MyProgram.exe,2
Shell
(Default) = doit
open
command
(Default) = C:\MyDir\MyProgram.exe "%1"
doit
(Default) = &Do It
command
(Default) = C:\MyDir\MyProgram.exe /d "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /p "%1" "%2" %3 %4