在DELPHI中,如何在NT、2000中清空回收站中的内容。

解决方案 »

  1.   

    Procedure EmptyRecycleBin ;  Const    SHERB_NOCONFIRMATION = $00000001 ;    SHERB_NOPROGRESSUI   = $00000002 ;    SHERB_NOSOUND        = $00000004 ;
      Type    TSHEmptyRecycleBin = function (Wnd     : HWND  ;                                   LPCTSTR : PChar ;                                   DWORD   : Word   ) : Integer ; stdcall ;  Var    SHEmptyRecycleBin : TSHEmptyRecycleBin ;    LibHandle         : THandle            ;
      Begin    LibHandle := LoadLibrary(PChar('Shell32.dll')) ;    If LibHandle <> 0 then      @SHEmptyRecycleBin := GetProcAddress(LibHandle, 'SHEmptyRecycleBinA')    Else      Begin        MessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0);        Exit ;      End ;
        If @SHEmptyRecycleBin <> nil then      SHEmptyRecycleBin(Application.Handle      ,                        ''                      ,                        SHERB_NOCONFIRMATION or                        SHERB_NOPROGRESSUI   or                        SHERB_NOSOUND            ) ;    FreeLibrary(LibHandle);    @SHEmptyRecycleBin := nil ;  End ;
      

  2.   

    以上代码在WIN 2000中可实现,
    但在如何在NT中不能实现清空回收站中的内容。  
      

  3.   

    以上代码在WIN 2000中可实现,
    但在NT中不能实现清空回收站中的内容。  
      

  4.   

    清空回收站Procedure EmptyRecycleBin ;ConstSHERB_NOCONFIRMATION = $00000001 ;SHERB_NOPROGRESSUI = $00000002 ;SHERB_NOSOUND = $00000004 ;TypeTSHEmptyRecycleBin = function (Wnd : HWND ;LPCTSTR : PChar ;DWORD : Word ) : Integer ; stdcall ;VarSHEmptyRecycleBin : TSHEmptyRecycleBin ;LibHandle : THandle ;BeginLibHandle := LoadLibrary(PChar('Shell32.dll')) ;If LibHandle <> 0 then@SHEmptyRecycleBin := GetProcAddress(LibHandle, 'SHEmptyRecycleBinA')ElseBeginMessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0);Exit ;End ;If @SHEmptyRecycleBin <> nil thenSHEmptyRecycleBin(Application.Handle ,'' ,SHERB_NOCONFIRMATION orSHERB_NOPROGRESSUI orSHERB_NOSOUND ) ;FreeLibrary(LibHandle);@SHEmptyRecycleBin := nil ;End ;
      

  5.   

    2000,Xp都可以,NT中应该也是可以,可惜我没有NT环境调试一下.