我使用这个程序:
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或永久删除文件会发生什么情况?
任何帮助都将不胜感激。
答案 0 :(得分:3)
找出答案的最佳方法是实际做到这一点。使我的回收箱至少占驱动器的1%。创建了一堆大文件,并使用您的函数将它们移动到回收站。
我发现的(无论如何在XP上)是该函数总是将它移动到回收站;但永久删除最旧的已删除文件。因此,当回收站填满时,它会采用“先进先出”类型的方法来决定启动哪个文件。
我无法让函数返回false。也许为分配的回收站创建一个太大的文件可以做到这一点。