2009-12-16 36 views
7

我用这个方法:如果回收站满当回收站已满时,ShFileOperation会做什么?

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

将代码缩进四个空格以使其正确显示。 –

+0

我不知道回收站可以“完整”。这是如何运作的? –

+0

顺便说一句 - 不错的功能。其实很好知道如何搬到回收站。我总是只使用“deletefile”函数。 –

回答

3

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

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

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

+0

感谢您试用! 这对我的客户来说是一个非常糟糕的坏消息。 – Irwan

+0

如果您的客户将文件保存在回收站中非常重要,那他为什么不删除回收站限制? – jpfollenius

+0

他是一个普通用户,所以我猜他不知道 – Irwan

相关问题