Domanda

Diversi anni fa, ho innocentemente provato a scrivere una piccola app per salvare le icone del desktop posizionate tatticamente perché ero stanco di trascinarle indietro nelle loro posizioni quando qualche evento le ha ripristinate. Mi sono arreso dopo aver trascorso troppo tempo a WAY non riuscendo a trovare un modo per interrogare, tanto meno salvare e ripristinare, la posizione del desktop delle mie icone.

Qualcuno sa dove Windows persiste queste informazioni e se esiste un'API per impostarle?

Grazie, Richard

È stato utile?

Soluzione

Se non sbaglio il desktop è solo un ListView e dovrai inviare LVM_SETITEMPOSITION messaggio all'handle del desktop.

Ho cercato su Google un po 'di codice c # e non sono riuscito a trovare un esempio, ma ho trovato il seguente articolo. Torry: ... ottenere / impostare le posizioni delle icone del desktop? . È delphi code, ma lo trovo molto leggibile e con alcuni P / Invokes potrai tradurlo in c #.

Altri suggerimenti

Il desktop è solo un controllo ListView e puoi ottenere il suo handle e inviargli messaggi per spostare le icone in giro usando LVM_SETITEMPOSITION.

Ottenere posizioni delle icone usando LVMGETITEMPOS è un po 'più complicato, però. Devi passare un puntatore a una struttura POINT come LPARAM. Se si tenta di farlo, è probabile che si blocchi l'Explorer. Il problema è che gli hai passato un puntatore nello spazio degli indirizzi, che il controllo ha interpretato come un puntatore nello spazio degli indirizzi di Explorer. Ouch!

La soluzione che ho usato è quella di iniettare una DLL nel processo Explorer e inviare il messaggio da lì. Quindi devi solo avere un modo per riportare le informazioni sulla posizione al tuo processo.

Sto ancora esaminando questo aspetto e pubblicherò il risultato una volta che avrò finalmente funzionato. Sto pubblicando questo perché, grazie indirettamente al post di Davy, ho anche trovato un'implementazione VB classica:

Shuffle Desktop Icons Using Interprocess Memory Communication

e che probabilmente sarà la base del mio codice.

Non ho idea dell'API, ma conosco Ultramon ( http://www.realtimesoft.com / ultramon / ) ha una funzione inclusa per preservare il posizionamento delle icone (anche se non l'ho mai usato per preservare la posizione delle icone, è indispensabile per l'utilizzo di più monitor). L'ultima versione beta funziona perfettamente con Vista (tranne per il fatto che a volte hanno un piccolo errore o due quando si accede inizialmente alla mia macchina tramite RDP) e, naturalmente, non ho avuto problemi con XP. L'ho usato per oltre quattro anni.

E ho già detto che è la migliore utility per l'utilizzo di più monitor?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top