三问文件夹选项更改后刷新的问题

日总是我哥 2008-11-21 11:50:22
上一次经过palmax的指点,使用SHGetSetSettings函数可以实现刷新,但是,该函数在Win2k下无效,据msdn中对SHGetSetSettings的介绍:“This function is available through Microsoft Windows XP Service Pack 2 (SP2) and Windows Server 2003. It might be altered or unavailable in subsequent versions of Windows.”,

Win2k的注册表也有相应的选项:
[code=INIFile]
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"Hidden"=dword:00000002
"ShowCompColor"=dword:00000000
"HideFileExt"=dword:00000001
"DontPrettyPath"=dword:00000000
"ShowInfoTip"=dword:00000001
"HideIcons"=dword:00000000
"MapNetDrvBtn"=dword:00000000
"WebView"=dword:00000001
"Filter"=dword:00000000
"SuperHidden"=dword:00000000
"SeparateProcess"=dword:00000000
"StartButtonBalloonTip"=dword:00000001
"StartMenuInit"=dword:00000001
[/code]

求在Win2k下的实现方法。
...全文
244 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
szg19901022 2009-09-25
  • 打赏
  • 举报
回复
谢谢了。我找了很久了。网上的那些资料都是相互抄袭的。今天终于找到答案了....
lijianli9 2009-09-01
  • 打赏
  • 举报
回复
谢谢,学习中.....
palmax 2008-11-21
  • 打赏
  • 举报
回复
通过使用spy++等工具监测,现给出终极方法:(修改注册表 + WM_SETTINGCHANGE 通知更新)


bool ShowAllFilesInExplorer(bool bShowHidden/*对应[显示所有的文件和文件夹]*/, bool bShowSysProtected/*对应[显示受操作系统保护的文件]*/)
{
HKEY hKey = {0};
bool bRet = true;

if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"), 0, KEY_SET_VALUE, &hKey))
{
DWORD dwShowHidden = bShowHidden ? 1 : 2;
DWORD dwShowSysProtected = bShowSysProtected ? 1 : 0;

if (ERROR_SUCCESS != ::RegSetValueEx(hKey, TEXT("Hidden"), 0, REG_DWORD, (LPBYTE)&dwShowHidden, (DWORD)sizeof(dwShowHidden))
||
ERROR_SUCCESS != ::RegSetValueEx(hKey, TEXT("ShowSuperHidden"), 0, REG_DWORD, (LPBYTE)&dwShowSysProtected, (DWORD)sizeof(dwShowSysProtected)))
{
bRet = false;
}

::RegCloseKey(hKey);
}
else
{
bRet = false;
}

if (bRet)
{
::SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)TEXT("ShellState"), SMTO_ABORTIFHUNG, 3000, NULL);
::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
}

return bRet;
}
日总是我哥 2008-11-21
  • 打赏
  • 举报
回复
谢谢,测试通过!
android2008 2008-11-21
  • 打赏
  • 举报
回复
up

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧