2009-10-29 163 views
1

在我的节目我切换的隐藏文件的注册表值告诉Explorer是否隐藏或显示它们。但是,由于浏览器本身不刷新,所以我发送事件C#刷新浏览器

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

刷新一切。但是,不幸的是,它似乎并不令人耳目一新。我看到桌面上的屏幕闪烁了一下,但为了查看更改,我必须手动刷新文件夹。 SHChangeNotify似乎不适合我。任何帮助将不胜感激。

回答

0

与变化fShowAllObjects

简单的GET与SHGetSetSettings设置尝试SHGetSetSettings虽然不会工作。

它是足够聪明,比较它的当前设置你的发送它,如果两者是不同的,只会通知改变的其他窗口。

刷新桌面使用的SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,SPI_SETNONCLIENTMETRICS,NULL);

+0

我能有一个代码段?我试图使用SHGetSetSettings,它并没有解决我的问题。 – Null 2009-10-29 03:04:26

+0

http://www.google.com/codesearch?as_q=SHGetSetSettings&btnG=Search+Code&hl=zh-CN&as_lang=c%23&as_license_restrict=i&as_license=&as_package=&as_filename=&as_case= – 2009-10-29 14:56:17

+0

var shellState = new SHELLSTATE(); shellState.fShowExtensions = 1; SHGetSetSettings(参考shellState,SSF.SSF_SHOWEXTENSIONS,TRUE); ^^^这就是我在我的代码中所做的。仍然没有帮助。 :\ – Null 2009-10-29 16:02:13