15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




Посылаем файл в "корзину" (Recycle Bin)

Автор: thomas johansson

Если пользователь Вашего приложения имеет возможность удалять файлы, то иногда бывает необходимо дать ему возможность восстанавливать ошибочно удалённые файлы.

Совместимость: Delphi (все версии)

Не забудьте добавить ShellAPI в группу uses.

А это сама функция, которая выполняет всю работу:


function RecycleFile(sFileName: string): Boolean;
var
FOS: TSHFileOpStruct;
begin
   FillChar(FOS, SizeOf(FOS), 0);
   with FOS do
      begin
         wFunc := FO_DELETE; { так же можно использовать FO_COPY.
         pFrom := PChar(sFileName);
         pTo := { только для FO_COPY }
         fFlags := FOF_ALLOWUNDO; { Так как мы хотим послать файл в корзину }
      end;
   // Отправляем файл
   Result := (SHFileOperation(FOS) = 0);
end;

Пример вызова функции:
RecycleFile('E:\Test.exe' + #0);

либо, если изменить строку pFrom:=PChar(sFileName+#0); , то можно вызывать проще:

RecycleFile(Filename);