我有一个 Windows shell 扩展,它使用IShellIconOverlayIdentifier接口在文件和文件夹上显示覆盖图标。我的扩展有点像TortoiseCVS或TortoiseSVN。
有时我需要让 Windows 资源管理器重绘它的所有图标。为此,我像这样调用SHChangeNotify:
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)
这会刷新任何打开的资源管理器窗口的桌面和右侧窗格。它不会刷新任何资源管理器窗口左侧的文件夹树。
所以我尝试像这样发送WM_SETTINGCHANGE:
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0)
在 Vista 上,这会刷新文件夹树,但不会刷新右侧窗格。
SHChangeNotify()
后跟的组合WM_SETTINGCHANGE
似乎在 Vista 上运行良好。但是如果显示,我仍然无法刷新XP上的文件夹树。
有谁知道如何更好地做到这一点?
XP有更好的解决方案吗?
发送SHCNE_ASSOCCHANGED
有点像在头顶上杵 Explorer。它会导致整个桌面非常剧烈地刷新,并导致任何打开的资源管理器窗口松动那里的滚动位置。有没有比这更暴力的东西?