Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Вниз

Копирование файлов   Найти похожие ветки 

 
Kaand   (2004-06-08 09:38) [0]

Подскажит, как копировать, чтобы не появлялось окно виндовы "Копирование."

function CopyFiles(const source, dest : string): boolean;
var
F : TShFileOpStruct;
begin
FormInstall.Memo1.Lines.Add("source: "+source+" - dest: "+dest);
F.Wnd   := 0;
F.wFunc := FO_COPY;
F.pFrom:=pchar(Source+#0);
F.pTo:=pchar(Dest+#0);
F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
result := (ShFileOperation(F) = 0);
end;

procedure FindFiles2(StartFolder, Mask: String;ScanSubFolders: Boolean = True);
var
SearchRec,F: TSearchRec;
FindResult: Integer;
DT : TFileTime;
ST : TSystemTime;
DirFrom, DirTo:String;
Vf: file;
begin

try
  StartFolder:=IncludeTrailingBackslash(StartFolder);
  FindResult:=FindFirst(StartFolder+"*.*", faAnyFile, SearchRec);
  try
    while FindResult = 0 do with SearchRec do
      begin
        if (Attr and faDirectory)<>0 then
          begin
            if ScanSubFolders and (Name<>".") and (Name<>"..") then
              begin
                FindFiles2(StartFolder+Name, Mask, ScanSubFolders);
              end
          end
         else
          begin
            if MatchesMask(Name, Mask) then
              begin
                DirFrom:=StartFolder;
                DirTo:="c:\Temp"+Copy(DirFrom,3,Length(DirFrom));
                ForceDirectories(DirTo);
                CopyFiles(DirFrom+Mask,DirTo);   //  CopyFile
                FindClose(F);
              end;  //IF
          end;
        FindResult:=FindNext(SearchRec);
      end;
  finally
    FindClose(SearchRec);
  end;
finally
end;
end;


 
Bar   (2004-06-08 10:48) [1]

function SHFileOperation(const lpFileOp: TSHFileOpStruct): Integer; stdcall;
Данная функция позволяет производить копирование, перемещение, переименование и удаление
(в том числе и в Recycle Bin) объектов файловой системы.
Функция возвращает 0, если операция выполнена успешно, и ненулевое значение в противном :-)
случае.

Функция имеет единственный аргумент - структуру типа TSHFileOpStruct, в которой и
передаются все необходимые данные.
Эта структура выглядит следующим образом:

_SHFILEOPSTRUCTA = packed record
   Wnd: HWND;
   wFunc: UINT;
   pFrom: PAnsiChar;
   pTo: PAnsiChar;
   fFlags: FILEOP_FLAGS;
   fAnyOperationsAborted: BOOL;
   hNameMappings: Pointer;
   lpszProgressTitle: PAnsiChar; { используется только при установленном флаге FOF_SIMPLEPROGRESS }
 end;

Поля этой структуры имеют следующее назначение:
hwnd Хэндл окна, на которое будут выводиться диалоговые окна о ходе операции.
wFunc Требуемая операция. Может принимать одно из значений:

FO_COPY Копирует файлы, указанные в pFrom в папку, указанную в pTo.
FO_DELETE Удаляет файлы, указанные pFrom (pTo игнорируется).
FO_MOVE Перемещает файлы, указанные в pFrom в папку, указанную в pTo.
FO_RENAME Переименовывает файлы, указанные в pFrom.
pFrom
Указатель на буфер, содержащий пути к одному или нескольким файлам. Если файлов несколько,
между путями ставится нулевой байт. Список должен заканчиваться двумя нулевыми байтами.

pTo
Аналогично pFrom, но содержит путь к директории - адресату, в которую производится копирование
или перемещение файлов. Также может содержать несколько путей. При этом нужно установить флаг
FOF_MULTIDESTFILES.

fFlags
Управляющие флаги.
FOF_ALLOWUNDO Если возможно, сохраняет информацию для возможности UnDo.
FOF_CONFIRMMOUSE Не реализовано.
FOF_FILESONLY Если в поле pFrom установлено *.*, то операция будет производиться только с файлами.
FOF_MULTIDESTFILES Указывает, что для каждого исходного файла в поле pFrom указана своя директория - адресат.
FOF_NOCONFIRMATION Отвечает "yes to all" на все запросы в ходе опеации.
FOF_NOCONFIRMMKDIR Не подтверждает создание нового каталога, если операция требует, чтобы он был создан.
FOF_RENAMEONCOLLISION В случае, если уже существует файл с данным именем,
создается файл с именем "Copy #N of..."
FOF_SILENT Не показывать диалог с индикатором прогресса.
FOF_SIMPLEPROGRESS Показывать диалог с индикатором прогресса, но не показывать имен файлов.
FOF_WANTMAPPINGHANDLE Вносит hNameMappings элемент.
Дескриптор должен быть освобожден функцией SHFreeNameMappings.
fAnyOperationsAborted
Принимает значение TRUE если пользователь прервал любую файловую операцию до ее завершения
и FALSE в ином случае.

hNameMappings
Дескриптор объекта отображения имени файла, который содержит массив структур SHNAMEMAPPING.
Каждая структура содержит старые и новые имена пути для каждого файла, который перемещался,
скопирован, или переименован. Этот элемент используется только, если установлен флаг FOF_WANTMAPPINGHANDLE.

lpszProgressTitle
Указатель на строку, используемую как заголовок для диалогового окна прогресса.
Этот элемент используется только, если установлен флаг FOF_SIMPLEPROGRESS.

Примечание.
Если pFrom или pTo не указаны, берутся файлы из текущей директории.
Текущую директорию можно установить с помощью функции SetCurrentDirectory и получить
функцией GetCurrentDirectory.


 
dreamteller ©   (2004-06-08 16:27) [2]

Не помню точно, но, вроде, copyfile(откуда,куда,0 или 1)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.049 c
14-1088399763
VEG
2004-06-28 09:16
2004.07.18
Есть довольно раскрученный ресурс. Что посоветуете?


1-1089134354
ИМХО
2004-07-06 21:19
2004.07.18
Автоматизация Outlook а: как убить окно


1-1089019138
Riland
2004-07-05 13:18
2004.07.18
Grid - как Excel


14-1088102829
Knight
2004-06-24 22:47
2004.07.18
Моторола C350... что, правда, брать не стоит?


6-1084799281
delpher_gray
2004-05-17 17:08
2004.07.18
Зависание программы при TIdHTTP.Get()





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский