2009-03-15 12 views
12

Sì, so che questa sembra una domanda stupida, è solo una modifica una tantum che ho bisogno di concludere un compito un po 'banale, così posso passare a qualcosa di più interessante.Come aggiornare il desktop di Windows a livello di programmazione (ad esempio F5) da C#?

EDIT: Forse più informazioni potrebbero aiutare: sto cercando di rimuovere alcuni collegamenti dal desktop e ho bisogno che l'utente lo rimuova subito (quindi non devono premere F5).

+0

PS. googling rivela che qualcuno di expertsexchange ha la stessa domanda, ma non voglio registrarmi sul loro sito web. – DSO

+1

@DSO: Penso che tu possa arrivare alle risposte sugli esperti-scambiare scorrendo fino alla fine della pagina .. (dovresti usare il trattino in scambio di esperti, altrimenti sembra "esperto-qualcosa-altro";]) –

risposta

36

È possibile utilizzare l'API SHChangeNotify.

[System.Runtime.InteropServices.DllImport("Shell32.dll")] 
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2); 

e quindi chiamare in questo modo

SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero); 
+0

felice di poter aiutare –

+0

Grazie, risolve davvero i miei problemi. – Sean

+1

@DSO Come lo hai "tagliato"? – SepehrM

2

Penso che stiate cercando IActiveDesktop::ApplyChanges. Avrete bisogno di accedere a questo tramite l'interfaccia COM, che dovrebbe essere abbastanza facile con tutto il documentation Microsoft fornisce su interoperabilità COM.

+0

Grazie per il suggerimento, sembra che questo avrebbe probabilmente funzionato ... tuttavia l'approccio Win32 di Tom è stato un po 'più facile da usare subito. – DSO

Problemi correlati