![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование файлов ОС
SIV5000 © (2012-02-22 15:37:00)Народ привет. Подскажите пожалуйста. Еть несколько способов копирования файлов/папок с файлами. Вот допустим используя TSHFileOpStruct
procedure TForm1.Button1Click(Sender: TObject) ;
var
Fos : TSHFileOpStruct;
Buf : array[0..4096] of char;
p : pchar;
sDest : string;
begin
FillChar(Buf, sizeof(Buf), #0) ;
p := @buf;
p := StrECopy(p, 'C:\FirstFile.ext1') + 1;
p := StrECopy(p, 'C:\SecondFile.ext2') + 1;
StrECopy(p, 'C:\ThirdFile.ext3') ;
sDest := 'e:\';
FillChar(Fos, sizeof(Fos), #0) ;
with Fos do
begin
Wnd := Handle;
wFunc := FO_COPY;
pFrom := @Buf;
pTo := sDest;
fFlags := 0;
end;
if ((SHFileOperation(Fos) <> 0) or (Fos.fAnyOperationsAborted <> false)) then ShowMessage('Cancelled')
end;
можно копировать как один файл так и несколько и т.п.
Все работает нормально, НО. Если к примеру копирую большой файл то если он еще не скопировался до конца и закрыть програму то копирование файла тоже прекращаеться. Как можно копировать/перемещать файлы/папки с файлами так чтоб этот процес не зависел от програмы которая его начала. Вот напримет если скопировать файлы в експлорере и "вставить" их то окно експлорера можно спокойно закрыить а копированеи будет продолжатся.
SIV5000 (2012-02-22 17:36:00) [21]
> выполнить его от имени другой программы/в другой программе
Может быть. Но как ето сделать? Может есть пример? Вообще когда в проводике скопировать файлы а потом вставить в какуюто папку, то копирование продолжаеться даже если закрыть окно проводника. Кае это там реализировано?
Как програмно вызвать "ВСТАВИТЬ" и указуть кудаб что б копированием занималась винда? Кто знает?
sniknik (2012-02-22 17:14:00) [22]выполнить его от имени другой программы/в другой программе, которую не закрывают. в проводнике например. если получится конечно.
или в чемто типа COM сервера, независимого от твоей программы.
SIV5000 (2012-02-22 16:30:00) [23]
> как только последнее окно закроешь - копирование остановится
Да. Ну а как сделать так что б при закрытии программы kопирование продолжалось???
Anatoly Podgoretsky (2012-02-22 16:03:00) [24]> AV (22.02.2012 15:57:01) [1]
Оно прекратится также если выключить компьютер.
AV (2012-02-22 15:57:00) [25]как только последнее окно закроешь - копирование остановится