7

我使用这个程序:

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 还是永久删除文件?

任何帮助,将不胜感激。

4

1 回答 1

3

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

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

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

于 2009-12-16T04:33:53.070 回答