Что делает ShFileOperation, когда корзина заполнена? - PullRequest
7 голосов
/ 16 декабря 2009

Я использую эту процедуру:

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 Ответ

3 голосов
/ 16 декабря 2009

Лучший способ узнать это на самом деле сделать это. Сделано, чтобы моя корзина была минимум 1% от привода. Создал кучу больших файлов и использовал вашу функцию, чтобы переместить их в корзину.

Что я обнаружил (в любом случае на XP), так это то, что функция всегда перемещает его в корзину; но навсегда удаляет самый старый удаленный файл. Таким образом, появляется, когда корзина заполняется, она использует подход типа «первым пришел - первым вышел», чтобы решить, какой файл загрузить.

Мне не удалось заставить функцию возвращать false. Возможно, создание файла, слишком большого для выделенной корзины, сделает это.

...