How can I programmatically refresh Windows Explorer? How can I programmatically refresh Windows Explorer? windows windows

How can I programmatically refresh Windows Explorer?


Does anyone have any ideas how to do this better?

Personally I don't know. You mention the Tortoise programs which do a similar thing, so an excellent starting point would be to have a look at what they do in their source :)

These look to be the relevant source files that handle this problem:

I note in the RebuildIcons method in each of those will:

  1. set the shell icon size or colour depth to a temporary value
  2. updates all the windows by broadcasting the setting change
  3. resets the shell icon size or colour depth to the original value
  4. updates all the windows a second time with a broadcast of the setting change

Perhaps this is part of the trick to get things working in XP.


Use spy++ to see what WM_COMMMAND message gets sent when you press F5 in windows explorer or find what menu message is used for view/refresh

Then use FindWindow to get the explorer window you want and send the WM_COMMAND recorded earlier etc message to it.

This is a fun way to control all sorts of Windows programs.


You can also send a WM_KEYDOWN message with the F5 keycode to all open explorer windows. This is a bit of a hack though.