Программирование
Главная » 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; |