小编Hug*_*ghE的帖子

如何以编程方式刷新Windows资源管理器?

我有一个Windows shell扩展,它使用IShellIconOverlayIdentifier接口在文件和文件夹上显示叠加图标.我的扩展有点像TortoiseCVSTortoiseSVN.

有时候我需要让Windows资源管理器重绘它的所有图标.为此,我像这样调用SHChangeNotify:

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)
Run Code Online (Sandbox Code Playgroud)

这将刷新任何打开的资源管理器窗口的桌面和右侧窗格.它不会刷新任何资源管理器窗口左侧的文件夹树.

所以我试着像这样发送WM_SETTINGCHANGE:

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0) 
Run Code Online (Sandbox Code Playgroud)

在Vista上,这会刷新文件夹树,但不会刷新右侧窗格.

的组合SHChangeNotify()之后WM_SETTINGCHANGE,似乎在Vista上工作得非常好.但如果显示,我仍然无法刷新XP上的文件夹树.

有没有人有任何想法如何更好地做到这一点?

XP有更好的解决方案吗?

发送SHCNE_ASSOCCHANGED有点像吟唱探险者头.它导致整个桌面刷新非常猛烈,并且任何打开的资源管理器窗口都会松开滚动位置.有什么东西不那么暴力吗?

windows explorer winapi windows-explorer windows-vista

21
推荐指数
1
解决办法
1万
查看次数