RT。我要选中不显示隐藏文件一选项
我修改了 Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Nohidden 和
         Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Showall 这两个的值后,再看文件夹选项里面选择的确实是
‘不显示隐藏文件’,并且我在程序里发了这个消息 
 Sendmessage(HWND_BROADCAST,WM_SETTINGCHANGE, 0 ,0); 结果不起任何作用!!
 

解决方案 »

  1.   

    有可能 
    在文件夹选项对话框操作一下,同时用工具监视修改了哪些注册表项
    --------------------------------------------------------------
    发现系统修改的只是这个键值HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden 也在网上找了下资料,大多数人都说通过修改
    Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Showall  
    这两个的键值可以,其实还要修改 
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
    这个值,改为2表示不显示隐藏文件,1表示显示所有文件,
    先修改这个地方后,再修改Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Showall 这两个地方的值全为0
    接下来再刷新EXPLORER,不管用户怎么选择,都不无显示隐藏文件!!!
    以下是刷新EXPLORER的代码,网上找的:function EnumWindowsProc(AHWnd: HWND;LPARAM: lParam): boolean; stdcall;   
    var  
    WClassName : array[0..254] of char;   
    begin  
    Result := True;   
    GetClassName(AHWnd, @WClassName, 254);   
    if SameText(WClassName,'CabinetWClass') then  
    begin  
        PostMessage(AHWnd,$111, 28931, 0);   
    end;   
    end;   
      
    Procedure UpdateExplorer;   
    var  
    AHandle : THandle;   
    begin  
    EnumWindows(@EnumWindowsProc, 0);   
    AHandle := FindWindow('Progman',Nil);   
    if AHandle <> 0 then PostMessage(AHandle,$111, 28931, 0);   
    end; //刷新窗口代码 : 也是网上的
    const  
      FCIDM_SHVIEWSHELL = $7000;   
      FCIDM_MENU_VIEW_REFRESH = FCIDM_SHVIEWSHELL + $0103;   
    //向系统广播消息,刷新所有窗口   
          PostMessage(HWND_BROADCAST, WM_COMMAND, FCIDM_MENU_VIEW_REFRESH, 0);  谢谢各位。
      

  2.   

    用程序刷新桌面的方式可行吗?
    SHChangeNotify
      

  3.   

    Uses部分手动添加上ShlObj
    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NiL, NiL);