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

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


Копирование файлов со стандартным диалоговым окошком.

Компилятор: Delphi

Следующий пример демонстрирует использование функции SHFileOperation для копирования нескольких файлов и отображения стандартного системного диалога копирования файлов. Следующие флаги так же можно использовать для удаления, перемещения и переименования группы файлов.

TO_COPY
FO_DELETE
FO_MOVE
FO_RENAME

Замечание: Буфер, который содержит имена файлов для копирования должен заканчиваться двумя нулями;

Пример:

uses ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
var
Fo      : TSHFileOpStruct;
buffer  : array[0..4096] of char;
p       : pchar;

begin
  FillChar(Buffer, sizeof(Buffer), #0);
  p := @buffer;
  p := StrECopy(p, 'C:\DownLoad\1.ZIP') + 1;
  p := StrECopy(p, 'C:\DownLoad\2.ZIP') + 1;
  p := StrECopy(p, 'C:\DownLoad\3.ZIP') + 1;
  StrECopy(p, 'C:\DownLoad\4.ZIP');

  FillChar(Fo, sizeof(Fo), #0);
  Fo.Wnd    := Handle;
  Fo.wFunc  := FO_COPY;
  Fo.pFrom  := @Buffer;
  Fo.pTo    := 'D:\';
  Fo.fFlags := 0;
  if ((SHFileOperation(Fo) <> 0) or
      (Fo.fAnyOperationsAborted <> false)) then
    ShowMessage('Cancelled')
end;