dephi中如何通过一个按钮实现隐藏与显示隐藏文件之间的切换。希望提供代码,谢谢!

解决方案 »

  1.   

    HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL,
    将CheckedValue键值修改为1即可显示,改为0就是隐藏……
    程序……就一个注册表的修改,不至于很难吧
    别忘了uses Registry
      

  2.   

    修改后用SHChangeNotify刷新一下
      

  3.   

    对,忘记说了,不刷新的话要重启之后才能生效的
    多谢liangpei2008的提醒和补充
      

  4.   

    use   ...,registry,...   
      procedure   TForm1.Button1Click(Sender:   TObject);   
      var   
          r:Tregistry;   
      begin   
          r   :=   Tregistry.Create;   
          r.RootKey   :=   HKEY_LOCAL_MACHINE;   
          r.OpenKey('SOFTWARE\youkey',true);   
          r.Writestring('youval','11111');   
          showmessage(r.Readstring('youval'));   
          r.Free;   
      end;   
    寒……
    上面是一个例子,你参照着改下
      

  5.   

    大侠,好事做到底,帮忙检查一下,为什么不行啊?procedure TForm1.Button1Click(Sender: TObject);
    var   
          myReg:TRegistry;
      begin   
          myReg:=TRegistry.Create;   
          myReg.RootKey:=HKEY_LOCAL_MACHINE;   
          myReg.OpenKey('Software\Microsoft\windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL',True);
          myReg.WriteInteger('CheckedValue',1);
          SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_idlist,nil, nil); 
          myReg.CloseKey;
          myReg.Free;   
      end;  
      

  6.   

    没效果?
    你的 SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_idlist,nil, nil); 放在这里?我没这样试过不知道有没有用……
    放在regfree后面试试……
      

  7.   

    还是没效果啊。
    我看到注册表中CheckedValue已改为00000001了,但即使重启电脑,隐藏文件夹仍然看不到。
      

  8.   

    发现:
    CheckedValue已改为0后,通过工具-文件夹选项-查看-显示所有文件,将显示不了隐藏文件;
    CheckedValue已改为1后,还是要通过工具-文件夹选项-查看-显示所有文件,隐藏文件才能显示。而我是想实现:
    按一下按钮可以显示隐藏文件,再按一下就又隐藏文件,从而代替“工具-文件夹选项-查看-显示所有文件”冗长的过程。
      

  9.   

    既然如此,你用模拟点击看下
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
    application.Minimize; 
    keybd_event(92,0,0,0); 
    keybd_event(68,0,0,0); 
    keybd_event(68,0,KEYEVENTF_KEYUP,0); 
    keybd_event(92,0,KEYEVENTF_KEYUP,0); 
    Sleep(500); 
    keybd_event(93,0,0,0); 
    keybd_event(93,0,KEYEVENTF_KEYUP,0); 
    Sleep(500); 
    keybd_event(69,0,0,0); 
    keybd_event(69,0,KEYEVENTF_KEYUP,0); 
    application.Restore; 
    end; 
    ……在车上颠了几个小时,刚下来头还是晕的……
      

  10.   

    procedure TForm1.Button1Click(Sender: TObject); 
    var  
          myReg:TRegistry; 
      begin  
          myReg:=TRegistry.Create;  
          myReg.RootKey:=HKEY_LOCAL_MACHINE;  
          myReg.OpenKey('Software\Microsoft\windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL',True); 
          myReg.WriteInteger('CheckedValue',1); 
          SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_idlist,nil, nil); 
          myReg.CloseKey; 
          myReg.Free;  
      end;  那你就先看CheckedValue 的值啊,是1就改为0,是零就变1