vista puedo para internet for descargar actualizar windows winapi windows-vista explorer windows-explorer

puedo - internet explorer 9.0 for windows 7 64 bit



¿Cómo puedo actualizar programáticamente el Explorador de Windows? (3)

¿Alguien tiene alguna idea de cómo hacer esto mejor?

Personalmente no lo sé. Mencionas los programas de Tortuga que hacen algo similar, por lo que un excelente punto de partida sería echar un vistazo a lo que hacen en su fuente :)

Estos parecen ser los archivos de origen relevantes que manejan este problema:

RebuildIcons en el método RebuildIcons que en cada uno de ellos:

  1. establecer el tamaño del icono de shell o la profundidad de color en un valor temporal
  2. actualiza todas las ventanas transmitiendo el cambio de configuración
  3. restablece el tamaño del icono de shell o la profundidad del color al valor original
  4. actualiza todas las ventanas por segunda vez con una transmisión del cambio de configuración

Tal vez esto sea parte del truco para que las cosas funcionen en XP.

Tengo una extensión de shell de Windows que usa la interfaz IShellIconOverlayIdentifier para mostrar los iconos de superposición en archivos y carpetas. Mi extensión es un poco como TortoiseCVS o TortoiseSVN .

A veces necesito hacer que Windows Explorer vuelva a dibujar todos sus iconos. Para hacer esto, llamo a SHChangeNotify así:

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)

Esto actualiza el escritorio y el panel derecho de cualquier ventana abierta del explorador. No actualiza el árbol de carpetas en el lado izquierdo de las ventanas del Explorador.

Así que intenté enviar WM_SETTINGCHANGE esta manera:

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0)

en Vista, esto actualiza el árbol de carpetas, pero no el panel de la derecha.

La combinación de SHChangeNotify() seguida de WM_SETTINGCHANGE parece funcionar bastante bien en Vista. Pero todavía no puedo actualizar el árbol de carpetas en XP si se muestra.

¿Alguien tiene alguna idea de cómo hacer esto mejor?

¿Hay una mejor solución para XP?

Enviar SHCNE_ASSOCCHANGED es un poco como golpear a Explorer en la cabeza. Hace que todo el escritorio se actualice de forma bastante violenta y cambia cualquier ventana abierta del Explorador para perder la posición de desplazamiento. ¿Hay algo que sea un poco menos violento?


También puede enviar un mensaje WM_KEYDOWN con el código de tecla F5 a todas las ventanas abiertas del explorador. Esto es un poco de un truco sin embargo.


Use spy ++ para ver qué mensaje WM_COMMMAND se envía cuando presiona F5 en el explorador de Windows o encuentra qué mensaje de menú se usa para ver / actualizar

Luego use FindWindow para obtener la ventana del explorador que desea y envíe el mensaje WM_COMMAND grabado anteriormente, etc.

Esta es una forma divertida de controlar todo tipo de programas de Windows.