O problema é que o Windows Explorer também fornece o shell inteiro para o Windows. Portanto, quando você clica nesse ícone de pasta, provavelmente já está usando o Explorer. Apenas inicia outro processo (ou janela).
Você pode querer examinar as substituições de shell.
Atualizar
Ok, deixe-me falar um pouco mais sobre minha compreensão das coisas.
Como todo o sistema funciona
Vamos começar pela minha área de trabalho.
Minha área de trabalho é desenhada pelo shell. O shell é fornecido pelo processo inicial explorer.exe
que é executado quando o Windows é iniciado. Se eu tiver uma pasta na minha área de trabalho:
Eupossoclicarduasvezesparaabri-lo:
Isso criou um novo processo explorer.exe
, que agora exibe a janela que mostra o conteúdo da minha pasta. Mas há muitos modos pelos quais a mesma janela poderia ter sido aberta.
Então, por que o Windows decidiu usar explorer.exe
para exibir essa pasta?
Bem, como eu disse, a área de trabalho já é um processo explorer.exe
. Por isso, basta usar ShellExecuteEx()
para deixe a casca decidir o que fazer com ela. O shell criará uma nova instância explorer.exe
(porque é difícil fazer isso ao meu conhecimento ).
Então, o que você pode fazer, não é usar explorer.exe
para fornecer seu shell (como você já parece fazer). Você pode simplesmente fornecer um aplicativo alternativo no registro em:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
Mas ninguém está parando esse novo shell de chamar ShellExecuteEx()
, o que, mais uma vez, invocará o shell padrão e, portanto, explorer.exe
!
Então, e agora?
Se você realmente quiser substituir o Windows Explorer, substitua o arquivo explorer.exe
. Porque, no final, todo programa poderia ainda tentar executar C:\Windows\explorer.exe
diretamente e então você terá o mesmo Explorer antigo novamente.
Mas, por favor, tenha em mente que eu nunca tentei substituir explorer.exe
em um sistema, então eu não sei se isso seria possível e / ou estável para usar.
Como o aplicativo XYZ faz isso?
Existem vários aplicativos que simplesmente conectam ao Explorer, como o QTTabBar . Talvez o Explorer ++ funcione da mesma maneira. Desta forma, você não precisa tocar em nada, pois sua modificação é sempre carregada em novos processos explorer.exe
. Entrar em detalhes sobre esse processo exigiria uma nova resposta.
E a caixa de diálogo Abrir arquivo?
Este é um novo conjunto de problemas. As caixas de diálogo File Save e File Open são parte do Biblioteca de Diálogos Comum . Tentando substituir esses é difícil imaginar. Quase o mesmo pode ser dito sobre aqueles que eu disse sobre explorer.exe
. Mas isso seria muito mais assustador.