系统隐藏和显示文件和文件夹
注册表相关问题
注册表修改如下:
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdv
anced]
"Hidden "=d
word:00000002 //不显示隐藏文件
"Hidden "=d
word:00000001 //显示所有文件
"Hidden "=d
word:00000000 //不显示系统文件或隐藏文件
"ShowCompColor "=d
word:00000000
"HideFileExt "=d
word:00000001//隐藏已知类型的扩展名
"ShowInfoTip "=d
word:00000001//鼠标指向文件夹和桌面项时显示提示信息
"ClassicViewState "=d
word:00000000//记忆每个文件夹的视图设置
vc更新注册表后,自动刷新桌面
分为两步,第一步让explorer从注册表重新读取信息,第二步刷新桌面,代码如下
void CRefreshExplorerDlg::OnRefreshExplorer()
{
::SHChangeNotify( SHCNE_ASSOCCHANGED , SHCNF_IDLIST | SHCNF_FLUSH, 0, 0);
HWND hWndProgram = ::FindWindow( _T("Progman"), NULL);
HWND hWndDefView = ::FindWindowEx( hWndProgram, NULL, _T("SHELLDLL_DefView"), NULL);
HWND hWndListView= ::FindWindowEx( hWndDefView, NULL, _T("SysListView32"), NULL);
::PostMessage( hWndListView, WM_KEYDOWN, VK_F5, 0);
::PostMessage( hWndListView, WM_KEYUP, VK_F5, 0);
}
试试
SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,NULL,NULL);
如果使用SystemParametersInfo修改系统设置,最后一个参数应设置为SPIF_SENDWININICHANGE。不过不是所有的操作都可以立即生效。
注册表里有那么多信息,关键看你修改的是啥,以及你的程序是否感兴趣啊。
如果是系统设置信息,可以试试:
D
word result;
SendMessageTimeout(
HWND_BROADCAST,
WM_SETTINGCHANGE,
NULL,
NULL,SMTO_ABORTIFHUNG | SMTO_BLOCK,
3000, //timeout in milliseconds
;result);
作者 IMGTN