Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Просмотр состояния корзины


Автор: Poseidon 19.5.2005, 03:44
Код
unit Unit1; 

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, ShellAPI; 

const 
  SHERB_NOCONFIRMATION  =  $1; 
  SHERB_NOPROGRESSUI    =  $2; 
  SHERB_NOSOUND         =  $4; 

type 
  TForm1 = class(TForm) 
    btnGetRecicleBinFileCount: TButton; 
    btnEmptyRecicleBin: TButton; 
    btnDelToReciclebin: TButton; 
    procedure btnGetRecicleBinFileCountClick(Sender: TObject); 
    procedure btnEmptyRecicleBinClick(Sender: TObject); 
    procedure btnDelToReciclebinClick(Sender: TObject); 
  end; 

type 
   TSHQueryRBInfo = packed record 
     cbSize      : DWORD; 
     i64Size, 
     i64NumItems : TLargeInteger; 
   end; 
   PSHQueryRBInfo = ^TSHQueryRBInfo; 

  function SHEmptyRecycleBin(hwnd: HWND; pszRootPath: PChar; 
    dwFlags: DWORD): HRESULT; stdcall; 
    external 'shell32.dll' name 'SHEmptyRecycleBinA'; 

  function SHQueryRecycleBin (pszRootPath: PChar; 
    var SHQueryRBInfo: TSHQueryRBInfo): HRESULT; stdcall; 
    external  'Shell32.dll' name 'SHQueryRecycleBinA';   

var 
  Form1: TForm1; 

implementation 

{$R *.dfm} 

// Просмотр состояния корзины (краткая информация) 
procedure TForm1.btnGetRecicleBinFileCountClick(Sender: TObject); 
var 
  Info: TSHQueryRBInfo; 
  Err: HRESULT; 
begin 
  ZeroMemory(@Info, SizeOf(Info)); 
  Info.cbSize := SizeOf(Info); 
  Err := SHQueryRecycleBin(nil, Info); 
  if Err = S_OK then 
    ShowMessage(Format('Всего в корзине %d эелементов, их общий размер: %d', 
      [Info.i64NumItems, Info.i64Size])) 
  else 
    ShowMessage(SysErrorMessage(Err)); 
end; 

end. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)