O que o Shfileoperation faz quando a lixeira está cheia?
-
19-09-2019 - |
Pergunta
Eu uso este procedimento:
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;
O que acontecerá se a lixeira estiver cheia, ele retornará falsa ou excluirá o arquivo permanentemente?
Qualquer ajuda seria apreciada.
Solução
A melhor maneira de descobrir é realmente fazê -lo. Fez minha lixeira de reciclagem ser mínima 1 % da unidade. Criou vários arquivos grandes e usou sua função para movê -los para reciclar a lixeira.
O que estou descobrindo (no XP de qualquer maneira) é que a função sempre a move para a lixeira; mas exclui permanentemente o arquivo excluído mais antigo. Então, parece que, quando a lixeira preenche a abordagem de tipo "primeiro em - primeiro a sair" para decidir qual arquivo inicializar.
Não consegui obter a função de retornar falsa. Talvez a criação de um arquivo muito grande para a lixeira alocada faça isso.