Não vou sugerir uma solução na minha resposta, pois o melhor que você pode fazer sem ferramentas de terceiros é provavelmente a resposta do PIMP_JUICE_IT (embora essa resposta esteja simplesmente adicionando um novo verbo suplementar e não tenha nada a ver com o Windows "Open With "e deve ser nomeado de acordo).
No entanto, tentarei explicar os detalhes técnicos sobre o que está acontecendo e por que:
O submenu "Abrir com" é implementado como uma extensão de shell IContextMenu e é registrado em HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers
. Quando você clica com o botão direito do mouse em um ou mais itens em uma pasta do shell, o shell examina várias chaves abaixo HKEY_CLASSES_ROOT
para criar o menu. As entradas em ...\shellex\ContextMenuHandlers
são dinâmicas e executam o código do computador real que determina quantos itens de menu adicionar (se houver).
Parece que a Microsoft codificou a extensão "Abrir com" para adicionar apenas o submenu quando você seleciona um único arquivo, com uma exceção; vários atalhos (.lnk) podem ser selecionados e você ainda obterá o submenu (pelo menos na minha máquina Windows 8). Vou falar um pouco e dizer que o manuseio do atalho é um bug.
Não há nenhuma razão técnica para o menu não funcionar em vários arquivos e, na verdade, costumava funcionar bem no Windows XP:
Eu estou supondo que a principal razão pela qual eles removeram é; o que você faz quando o usuário seleciona arquivos de diferentes tipos? No entanto, já existe um precedente para isso; você pode selecionar arquivos de tipos diferentes e pressionar enter para abrir todos eles. Quando você faz isso, o shell apenas usa a ação associada ao item que possui o retângulo de foco.
Seria possível que um fornecedor de software de terceiros crie um menu semelhante que funcione para vários arquivos. A única restrição é que o item "Escolha outro aplicativo" / "Escolha o programa padrão" na parte inferior do menu provavelmente terá que ser desativado quando houver vários arquivos, porque a maneira oficial de chamar essa caixa de diálogo suporta apenas um único caminho de arquivo. Para preencher o menu, basta usar SHAssocEnumHandlers para criar uma lista de aplicativos disponíveis para o tipo de arquivo especificado.
Esse é um caso tão extremo que ninguém gastou tempo para reimplementar a extensão "Abrir com" apenas para suportar vários arquivos, mesmo que fosse tecnicamente possível fazer isso ...