Posso alterar a caixa de diálogo "Procurar Pasta" do sistema globalmente?

15

Até onde eu sei, todo mundo odeia a caixa de diálogo "Procurar Pasta":

procurar diálogo da pasta

Essa caixa de diálogo é sempre muito pequena, raramente lembra bem os locais e, o pior de tudo: obriga a navegar em todo o computador usando uma estrutura de árvore tediosa.

Agora, para ser justo, é provável que alguns dos problemas estejam relacionados à maneira como os aplicativos estão chamando o controle - não definindo um tamanho ou um diretório padrão, etc. Mas o problema sobre o tedioso controle de árvore permanece.

Existe alguma maneira de personalizar sua instalação do Windows para usar um controle diferente? De preferência, um aplicativo / instalador faz isso por você com segurança, mas inserir uma DLL compatível ou uma técnica semelhante também seria bom.

Ou estamos presos a esse controle terrível para sempre?

Chris Phillips
fonte
A maioria das reclamações que você tem são opções controladas pelo software que a utiliza. Você precisaria substituir o shell inteiro para alterá-lo.
Ramhound
11
É uma desculpa ruim para uma interface de usuário.
aliteralmind
2
Esse UX terrível me irrita todas as vezes.
Ryan

Respostas:

1

resposta curta, sim, você está preso a ela

resposta longa:

a função que você está mencionando é a função SHBrowseForFolder () no Shell32.dll. Essa função é vinculada e executada a partir de milhares de programas. Portanto, a menos que você esteja gravando um programa específico para o qual deseja uma caixa de diálogo modificada, o que você deseja não será possível sem modificar ou substituir o shell32.dll (que é para todos os efeitos, além do escopo deste site).

aqui está a documentação para a função: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762115%28v=vs.85%29.aspx

se você simplesmente deseja alterá-lo dentro de um programa que está escrevendo, procure as especificações do seu idioma / plataforma para encontrar tutoriais (eles são abundantes).

Frank Thomas
fonte
2
Só queria perguntar, há uma versão da caixa de diálogo que é marginalmente mais utilizável, pois pelo menos permite copiar / colar um caminho. Esse é um diálogo personalizado, ou talvez o próprio SHBrowseForFolder () com alguns parâmetros, ou existe uma função separada para ele?
Karan
@Karan, pelo que estou vendo no documento, se você definir o parâmetro de entrada lpbi das funções para apontar para o endereço de uma instância BROWSEINFO cujo UFLAGS está definido como 0x00000010, a caixa de edição será exibida. infelizmente, como é um parâmetro, apenas o desenvolvedor tem a opção de exibi-lo ou não, aplicativo por aplicativo.
Frank Thomas
Obrigado e sim, parece que o sinalizador BIF_EDITBOX precisa ser definido. "apenas o desenvolvedor tem a opção de mostrar ou não" - Mas é claro. Eu não estava sugerindo que isso era algo que o usuário final poderia esperar fazer com o binário.
precisa