Aqui está a minha solução para adicionar uma entrada do menu de contexto do botão direito para executar um comando personalizado (como chamar o Meld) e diferenciar dois arquivos.
Plano de fundo
Entradas simples no menu de contexto podem ser facilmente adicionadas no registro do Windows (regedit): manualmente ou criando um arquivo .reg (veja o exemplo abaixo).
O problema é que o comando será executado para cada arquivo selecionado.
Existem três soluções para resolver isso:
- Use extensões do shell (complicadas)
- Verifique se seu aplicativo captura as chamadas diferentes (complicadas)
- Use
singleinstance.exe
de manipulador de menu de contexto (simples). Este programa faz a opção 2 para você. Coleta argumentos do tempo diferente que é chamado e depois os passa para o comando que você quer. Uma opção de tempo limite está disponível para ajudar a reunir as chamadas a serem coletadas. Siga o link para mais informações.
Passo 1 Download singleinstance.exe de guia de menu de contexto (e agradeço ao autor, a quem eu não estou relacionado)
Passo 2 (para comparação de arquivos e pastas) : Crie um arquivo com extensão ".reg" com o seguinte conteúdo (exemplo de Meld com um ícone):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\DiffIt_Files]
@="Diff it!"
"Icon"="C:\Config\look\Icons\Meld.ico"
[HKEY_CLASSES_ROOT\*\shell\DiffIt_Files\command]
@="\"c:\Bin\singleinstance.exe\" \"%1\" \"C:\Program Files (x86)\Meld\Meld.exe\" $files --si-timeout 400"
[HKEY_CLASSES_ROOT\Folder\shell\DiffIt_Folders]
@="Diff It!"
"Icon"="C:\Config\look\Icons\Meld.ico"
[HKEY_CLASSES_ROOT\Folder\shell\DiffIt_Folders\command]
@="\"c:\Bin\singleinstance.exe\" \"%1\" \"C:\Program Files (x86)\Meld\Meld.exe\" $files --si-timeout 400"
O arquivo reg cria uma entrada no menu de contexto chamada "Diff It!" para todos os arquivos ( *
) e para Pastas ( Folder
). As linhas que contêm o Icon
podem ser removidas se você não quiser um ícone.
Adapte o caminho do programa singleinstance.exe
e o comando execute (aqui C:\Program Files (x86)\Meld\Meld.exe
. Observe o escape dos backspaces e as aspas
Etapa 3 Execute o arquivo .reg
. Clicar duas vezes nele pode funcionar se você for administrador. Caso contrário, abra um prompt de comando admin na sua pasta (no explorer: Arquivo > Abra o Comando > Abra o Comando como admin. Ou Alt-F-M-A
). Basta digitar o nome do arquivo .reg
para adicioná-lo ao registro.
É isso.
(uninstall) Você pode excluir as chaves manualmente no registro ou criar um arquivo .reg
com o seguinte conteúdo:
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\*\shell\DiffIt_Files]
[-HKEY_CLASSES_ROOT\Folder\shell\DiffIt_Folders]
Alternativa Use um software para adicionar e editar as entradas do menu de contexto, como o ContextEdit (mas não é possível adicionar o ícone facilmente). Nesse caso, você não precisa escapar das barras e das aspas para que o comando fique assim:
"c:\Bin\singleinstance.exe "%1" "C:\Program Files (x86)\Meld\Meld.exe" $files --si-timeout 400