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

Irw*_*wan 7 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;
Run Code Online (Sandbox Code Playgroud)

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

任何帮助,将不胜感激.

M S*_*kel 3

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

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

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