我使用此过程:

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%。创建了一堆大文件,并使用您的功能将其移动以回收垃圾箱。

我发现(无论如何在XP上)发现该函数总是将其移至回收箱。但是删除最古老的删除文件。因此,当回收箱填充它时,它会使用“首先 - 首先”类型的方法来决定要启动哪个文件。

我无法使函数返回false。也许可以为分配的回收箱创建一个太大的文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top