回收站装满后ShFileOperation会怎么做?

时间:2009-12-16 02:36:20

标签: windows delphi recycle-bin

我使用这个程序:

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;

如果回收站已满,会返回false或永久删除文件会发生什么情况?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

找出答案的最佳方法是实际做到这一点。使我的回收箱至少占驱动器的1%。创建了一堆大文件,并使用您的函数将它们移动到回收站。

我发现的(无论如何在XP上)是该函数总是将它移动到回收站;但永久删除最旧的已删除文件。因此,当回收站填满时,它会采用“先进先出”类型的方法来决定启动哪个文件。

我无法让函数返回false。也许为分配的回收站创建一个太大的文件可以做到这一点。