Функция удаляет файл, имя которого указаывается в аргументе FileName в корзину. Второй необязательный параметр указывает на Handle окна, которое будет родительским для отображаемых системой диалоговых окон. Не забудьте добавить модуль ShellAPI
// Зависимости: Windows, ShellAPI, Forms
// Автор: Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
// Copyright: Dimka Maslov
function Recycle(const FileName: string; Wnd: HWND = 0): Boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), 0);
if Wnd = 0 then
Wnd := Application.Handle;
FileOp.Wnd := Wnd;
FileOp.wFunc := FO_DELETE;
FileOp.pFrom := PChar(FileName);
FileOp.fFlags := FOF_ALLOWUNDO or FOF_NOERRORUI or FOF_SILENT;
Result := (SHFileOperation(FileOp) = 0) and (not
FileOp.fAnyOperationsAborted);
end;
Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
begin
Recycle('Путь к файлу'
, Handle);
end;
Просмотров: 6774
5. Алексей
uses ShellAPI;
function DeleteFileWithUndo( sFileName : string ) : boolean; var fos : TSHFileOpStruct; begin sFileName:= sFileName+#0; FillChar( fos, SizeOf( fos ), 0 ); with fos do begin wFunc := FO_DELETE; pFrom := PChar( sFileName ); fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT; end; Result := ( 0 = ShFileOperation( fos ) ); end |
На самом деле, пример работает наполовину. Некоторые файлы, удалять не хочет (причём, они не зашарены) [другие оболочки удаляют спокойно].
Например: St := 'e:\Temp\05 Running Out Of Days.mp3'; Recycle(St, Handle); Особенно, если в имени файла есть апостроф ('). Система Win7 x64, D2010. |
Copyright © 2008 - 2018 Программирование на Delphi для начинающих и не только.
Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам.
Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации.