1

在我的程序中,我切换隐藏文件的注册表值来告诉资源管理器是隐藏还是显示它们。但是,由于资源管理器不会自行刷新,我发送事件

 SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);

刷新一切。然而,不幸的是,它似乎并没有让人耳目一新。我看到桌面上的屏幕有点闪烁,但为了看到更改,我必须手动刷新文件夹。SHChangeNotify 似乎对我不起作用。任何帮助将不胜感激。

4

1 回答 1

0

将 SHGetSetSettings 更改为 fShowAllObjects

但是,使用 SHGetSetSettings 进行简单的获取和设置将不起作用。

将其当前设置与您发送的设置进行比较是足够聪明的,并且只有在两者不同时才会通知其他窗口更改。

要刷新桌面,请使用 IShellWindows 枚举 shell 窗口,检查 IWebBrowser2.FullName 属性以跳过 IE 窗口,然后调用 IWebBrowser2::Refresh。

于 2009-10-29T00:22:19.523 回答