Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我的程序中,我切换隐藏文件的注册表值来告诉资源管理器是隐藏还是显示它们。但是,由于资源管理器不会自行刷新,我发送事件
SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);
刷新一切。然而,不幸的是,它似乎并没有让人耳目一新。我看到桌面上的屏幕有点闪烁,但为了看到更改,我必须手动刷新文件夹。SHChangeNotify 似乎对我不起作用。任何帮助将不胜感激。
将 SHGetSetSettings 更改为 fShowAllObjects
但是,使用 SHGetSetSettings 进行简单的获取和设置将不起作用。
将其当前设置与您发送的设置进行比较是足够聪明的,并且只有在两者不同时才会通知其他窗口更改。
要刷新桌面,请使用 IShellWindows 枚举 shell 窗口,检查 IWebBrowser2.FullName 属性以跳过 IE 窗口,然后调用 IWebBrowser2::Refresh。