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:
- TortoiseCVS – ShellUtils.cpp
- TortoiseSVN – ShellUpdater.cpp (username: “guest”, password: “”)
I note in the RebuildIcons
method in each of those will:
- set the shell icon size or colour depth to a temporary value
- updates all the windows by broadcasting the setting change
- resets the shell icon size or colour depth to the original value
- 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.