What does ShFileOperation do when the recycle bin is full?
Asked Answered
S

1

7

I use this procedure:

function MoveToRecycle(sFileName: widestring): Boolean;
var
  fos: TSHFileOpStructW;
begin
  FillChar(fos, SizeOf(fos), 0);
  with fos do
  begin
    wnd := 0;
    wFunc  := FO_DELETE;
    pFrom  := PWideChar(sFileName + #0 + #0);
    pTo := #0 + #0;
    fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
  end;
  Result := (ShFileOperationW(fos) = 0);
end;

What will happen if the recycle bin is full, does it return false or delete file permanently ?

Any help would be appreciated.

Sectional answered 16/12, 2009 at 2:36 Comment(5)
Indent your code by four spaces to get it to show up correctly.Currie
I wasn't aware that the Recycle Bin can be "full". How does that work?Wretched
By the way - nice function. Actually good to know how to move to the recycle bin. I always just used "deletefile" function.Frisco
Mason - you can set the recycle bin to be a "percentage" of your disk drive space. But we I learned, using this function at least, it never fills up, but instead pushes out the oldest deleted files when there is no more free capacity left.Frisco
By the way, you are triple null-terminating the path. You've got one more null than you need.Polydeuces
F
3

The best way to find out is to actually do it. Made my recycle bin be minimum 1 percent of drive. Created a bunch of large files and used your function to move them to recycle bin.

What I am finding out (on XP anyways) is that the function always moves it to the recycle bin; but deletes permanently the oldest deleted file. So it appears when the recycle bin fills up it employs a "first in - first out" type approach to decide which file to boot out.

I was not able to get the function to return false. Perhaps creating a file too large for the allocated recycle bin do this.

Frisco answered 16/12, 2009 at 4:33 Comment(2)
If it's so important for your customer to keep the files in their recycle bin, why doesn't he just remove the recycle bin limit?Barthel
He is a regular user, so I guess he doesn't aware about thatSectional

© 2022 - 2024 — McMap. All rights reserved.