感謝coolslob的幫助, 我被這個(gè)問題困惑很久的,今天終于找到的合適的解決方案
參考鏈接如下:
三問文件夾選項(xiàng)更改后刷新的問題
http://topic.csdn.net/u/20081121/11/f5034a2f-26ae-4f74-a357-1fbd33576883.html 再問文件夾選項(xiàng)更改后刷新的問題
http://topic.csdn.net/u/20081108/18/ab4009f0-bfd1-4af6-873d-06ec7837236a.html
在程序中怎么調(diào)用設(shè)置文件夾選項(xiàng)的功能?
http://topic.csdn.net/u/20081104/11/b79c58c2-7887-4144-87d0-e9486685cb87.html
實(shí)現(xiàn)代碼如下:
bool ShowAllFilesInExplorer(bool isShowHidden/*對(duì)應(yīng)[顯示所有的文件和文件夾]*/, bool isShowSysProtected/*對(duì)應(yīng)[顯示受操作系統(tǒng)保護(hù)的文件]*/, bool isShowFileExt/*對(duì)應(yīng)[隱藏已知文件類型的擴(kuò)展名]*/)
{
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 = isShowHidden ? 1 : 2;
DWORD dwShowSysProtected = isShowSysProtected ? 1 : 0;
DWORD dwShowFileExt= isShowFileExt? 0: 1;
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))
|| ERROR_SUCCESS != ::RegSetValueEx(hKey, TEXT("HideFileExt"), 0, REG_DWORD, (LPBYTE)&dwShowFileExt, (DWORD)sizeof(dwShowFileExt)))
{
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;
}