Delete files with the ability to undo or recycle

Windows will not let the user or your program undo file delete operations that your perform using low-level functions such as DeleteFile() from your program. Following function, however, will delete a file with the ability to undo (recycle) by sending the file to the "Recycle Bin."

 

uses ShellAPI;

 

function DeleteFileWithUndo(

  sFileName : string )

    : boolean;

var

  fos : TSHFileOpStruct;

begin

  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;

 

 

 

To delete a file, simply pass the file name to DeleteFileWithUndo() and it will return True if the operation was successful.