É fácil criar um item de menu de contexto do Windows Shell que utiliza um único arquivo como argumento. Veja esta pergunta para um exemplo.
No entanto, como você cria um item de menu de contexto que usa vários arquivos como argumentos? Digamos, para uma ferramenta diff-merge (no meu caso, o P4Merge), embora a mesma técnica também seja aplicável a outras aplicações.
Eu instalei o P4Merge, mas ele não adiciona um item ao menu de contexto automaticamente, então terei que fazê-lo manualmente.
Quando tentei usar:
"C:\Program Files\Perforce\p4merge.exe" %1 %2
como linha de comando, recebi um erro:
Erros: São necessários pelo menos dois arquivos. Não é possível abrir apenas um arquivo. O P4Merge precisa de 0, 2 ou 3 arquivos.
Quando tentei usar:
"C:\Program Files\Perforce\p4merge.exe" %0 %1
como linha de comando, ele abriu duas instâncias do P4Merge, uma para cada arquivo.
Parece que os nomes de arquivos corretos estão sendo transmitidos para% 0 e% 1, mas uma instância diferente do aplicativo P4Merge está sendo executada para cada um.
Atualmente, tenho a ferramenta DiffMerge do SourceGear, que possui um item no menu de contexto do Shell e funciona perfeitamente, pois eu posso selecionar dois arquivos e usar o item de menu de contexto para executar uma comparação neles. Estou tentando pesquisar no registro para ver quais argumentos o DiffMerge usa, mas não consegui encontrar uma linha de comando do DiffMerge que incluísse argumentos.
fonte
Respostas:
Você também pode tentar adicionar o programa ao menu SendTo.
fonte
Procurando a resposta, parece que não há uma correção simples e que é necessária uma extensão do shell. Olhando novamente para as entradas do Registro do DiffMerge, ele parece usar uma extensão do shell: DiffMergeShellExtension64.dll. Se o P4Merge não tiver essa extensão de shell, parece que a única maneira de fazê-lo funcionar corretamente no menu de contexto do Windows Explorer seria escrever uma.
A série Guia completo do idiota para escrever extensões de shell no Code Project é um guia útil para escrever extensões de shell. A parte II da série trata de escrever uma extensão que lida com vários arquivos de uma só vez (exatamente o que eu preciso).
Aviso: O Guia completo do idiota para criar extensões de shell usa C e COM, ATL (Active Template Library) e MFC (Microsoft Foundation Classes). Portanto, escrever uma extensão de shell, se você não estiver familiarizado com essas tecnologias, será um processo longo e potencialmente difícil; definitivamente não é algo que você pode fazer em uma hora.
fonte
Você pode fazer isso com meu programa context-menu-launcher (singleinstance) :
fonte
.exe
arquivos de suas respostas sem deixar claro que um download automático será iniciado.