Pergunta

Vários anos atrás, eu inocentemente tentou escrever um pequeno aplicativo para salvar meus ícones do desktop taticamente colocados porque eu estava cansado de arrastar-los de volta para seus locais quando algum evento redefini-las. I deram após enterrar maneira muito tempo tendo não conseguiu encontrar uma maneira de consulta, muito menos salvar e restaurar, posição de mesa dos meus ícones.

Alguém sabe onde o Windows persistir esta informação e se há uma API para defini-los?

Obrigado, Richard

Foi útil?

Solução

Se não me engano o ambiente de trabalho é apenas um ListView, e você terá que enviar o LVM_SETITEMPOSITION mensagem para a alça da área de trabalho.

Eu pesquisei um pouco para algum código c # e não poderia encontrar um exemplo, mas eu encontrei o seguinte artigo. Torry: ... get / set as posições de ícones de mesa ?. É o código delphi, mas acho que é muito legível e com alguma P / Invoca você vai ser capaz de traduzi-lo para c #.

Outras dicas

O ambiente de trabalho é apenas um controle ListView e você pode obter suas mensagens punho e enviá-lo para mover ícones em torno de usar LVM_SETITEMPOSITION.

Obter posições ícone usando LVMGETITEMPOS é um pouco mais complicado, no entanto. Você tem que passar um ponteiro para uma estrutura POINT como seu LPARAM. Se você tentar fazer isso, você provavelmente irá falhar Explorer. O problema é que você passou um ponteiro no seu espaço de endereço, que o controle interpretado como um ponteiro no espaço de endereço do Explorer. Ouch!

A solução que eu usei é injetar uma DLL no processo Explorer e enviar a mensagem de lá. Então você só tem que ter uma maneira de obter a informação posição de volta para o seu processo.

Ainda estou olhando para isso e publicará o resultado uma vez que eu finalmente conseguir alguma coisa de trabalho. Estou postando isso porque, graças indiretamente ao post de Davy, eu também encontrei uma implementação clássico VB:

Desktop Icons aleatórias Usando Comunicação entre memória

e que provavelmente será a base para o meu código.

Eu não tenho nenhuma idéia sobre o API, mas eu sei Ultramon ( http://www.realtimesoft.com / UltraMon / ) tem um recurso incluído para preservar a colocação ícone (embora eu nunca usei-o para preservar ícone do local, é indispensável para o uso múltiplo monitor). A última versão beta funciona perfeitamente com Vista (exceto às vezes tendo uma pequena falha ou dois, quando inicialmente entrando em minha máquina via RDP), e, claro, não tive quaisquer problemas com XP. Eu usei-o há mais de quatro anos.

E eu mencionei que ele é o melhor utilitário para uso múltiplo monitor?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top