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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top