MS Windows: Корзина должна быть чиста как совесть!
Не забудьте добавить ShellAPI в группу uses.
А это сама функция, которая выполняет всю работу:
function RecycleFile(sFileName: string): Boolean;
var
FOS: TSHFileOpStruct;
begin
FillChar(FOS, SizeOf(FOS), 0);
with FOS dobegin
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);
Программный код на языке Delphi!
Функция RecycleFile, которая принимает строковый параметр sFileName и пытается отправить файл, указанный этим именем, в корзину. Функция использует Windows Shell API'ы функцию SHFileOperation для достижения этого.
Разбивка кода:
Переменная FOS объявлена как TSHFileOpStruct, которая является структурой, используемой функцией SHFileOperation.
Функция FillChar используется для инициализации структуры FOS нулями.
Используется оператор with для установки различных полей структуры FOS:
wFunc: Установлен в FO_DELETE, что указывает на то, что должна быть выполнена операция удаления (в этом случае отправка файла в корзину).
pFrom: Установлен в указатель на строковый параметр sFileName.
pTo: Не используется в этом реализации, так как она только необходима для операций копирования.
fFlags: Установлен в FOF_ALLOWUNDO, что позволяет пользователю отменить операцию удаления (то есть восстановить файл из корзины).
Переменная Result установлена в значение возвращаемое функцией SHFileOperation, которое указывает, была ли операция успешной.
Наконец, функция RecycleFile возвращает булевое значение, указывающее, был ли файл успешно отправлен в корзину.
Пример кода в конце демонстрирует, как вызывать эту функцию с конкретным именем файла ('E:\Test.exe' + #0). КарACTER #0 используется для null-терминации строки, которая необходима для типа PChar (указатель на null-терминированную строку).
Если вы хотите упростить вызов функции и передать имя файла напрямую без конкатенации с #0, можно модифицировать код, как показано в комментарии.
В целом, этот код демонстрирует, как использовать Delphi Shell API для отправки файлов в корзину.
Функция RecycleFile на языке Delphi реализует удаление файлов в корзину на операционной системе Windows, выполняя функцию SHFileOperation.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.