2009-03-15 14 views
12

Sí, sé que parece una pregunta tonta, es solo un truco de una sola vez que necesito concluir una tarea un tanto mundana para poder pasar a algo más interesante.Cómo actualizar el escritorio de Windows mediante programación (es decir, F5) desde C#?

EDIT: Tal vez más información sería útil: estoy tratando de eliminar algunos accesos directos del escritorio y necesito que el usuario lo vea eliminado de inmediato (para que no tengan que presionar F5).

+0

PS. googlear revela que alguien de expertsexchange tiene la misma pregunta, pero no quiero registrarme en su sitio web. – DSO

+1

@DSO: Creo que puede obtener las respuestas en intercambio de expertos desplazándose hasta el final de la página ... (debe usar el guión en intercambio de expertos; de lo contrario, se ve como "experto-algo-otro";]) –

Respuesta

36

Puede usar la API SHChangeNotify.

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

y luego lo llaman de esta manera

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

me alegro de poder ayudar –

+0

Gracias, realmente resuelve mis problemas. – Sean

+1

@DSO ¿Cómo lo "cortó"? – SepehrM

2

Creo que estás buscando IActiveDesktop::ApplyChanges. Tendrá que acceder a esto a través de la interfaz COM, que debería ser bastante fácil con todos los documentation que Microsoft proporciona en COM Interop.

+0

Gracias por la sugerencia, parece que esto probablemente funcione ... sin embargo, el enfoque de Win32 de Tom fue un poco más fácil de usar de inmediato. – DSO

Cuestiones relacionadas