Пятница, 29.03.2024, 04:24
Приветствую Вас Гость
Меню сайта


Копилка для дальнейшего развития ресурса.
 
Форма входа
Интересное
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Программирование на Delphi.

Программирование

Главная » FAQ » Корзина


// Способ первый
uses
  ..., ShellAPI;

function DeleteFile( sFileName: string ): boolean;
var
  fos: TSHFileOpStruct;
begin
  sFileName := sFileName + #0;
  FillChar( fos, SizeOf( fos ), 0 );
  with fos do
  begin
  wFunc := FO_DELETE;
  pFrom := PChar( sFileName );
  fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
  end;
  Result := ( 0 = ShFileOperation( fos ) );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DeleteFile( 'c:\test.txt' );
end;

// Способ второй
uses
  ..., ShellAPI;

function DeleteFile( const FileName: string; Wnd: HWND = 0 ): boolean;
var
  FileOp: TSHFileOpStruct;
begin
  FillChar( FileOp, SizeOf( FileOp ), 0 );
  if Wnd = 0 then
  Wnd := Application.Handle;
  FileOp.Wnd := Wnd;
  FileOp.wFunc := FO_DELETE;
  FileOp.pFrom := PChar( FileName );
  FileOp.fFlags := FOF_ALLOWUNDO or FOF_NOERRORUI or FOF_SILENT;
  Result := ( SHFileOperation( FileOp ) = 0 ) and ( not FileOp.fAnyOperationsAborted );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DeleteFile( 'c:\test.txt', Handle );
end;




procedure EmptyRecycleBin;
const
  SHERB_NOCONFIRMATION = $00000001;
  SHERB_NOPROGRESSUI = $00000002;
  SHERB_NOSOUND = $00000004;

type
  TSHEmptyRecycleBin = function ( Wnd: HWND; pszRootPath: PChar;
  dwFlags: DWORD): HRESULT; 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, nil,
  SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI or SHERB_NOSOUND );
  FreeLibrary( LibHandle );
  @SHEmptyRecycleBin := nil;
end;