Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2012, 00:24   #1
volchek3
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 14
По умолчанию Изменить путь копирования файлов

Здравствуйте

Идея такая, происходит процесс копирования файлов с диска С на E (копирование происходит через Ctrl+C, Ctrl+V, либо с помощью тотала коммандера, проводник прочее).

Как изменить конечный путь копирования.
Т.е. копируем с С на E а файлы автоматически записываются в E:\Temp\

Использовал функцию CopyFileNextHook('С:\','Е:\Temp\',T RUE); - при копировании происходит завершение программы.

Исходник моей функции перехвата события копирования на диск

Код:
procedure searchCange;
const
  Filter =
  FILE_NOTIFY_CHANGE_FILE_NAME or
            FILE_NOTIFY_CHANGE_DIR_NAME or
            FILE_NOTIFY_CHANGE_ATTRIBUTES or
            FILE_NOTIFY_CHANGE_SIZE or
            FILE_NOTIFY_CHANGE_LAST_WRITE or
            FILE_NOTIFY_CHANGE_LAST_ACCESS or
            FILE_NOTIFY_CHANGE_CREATION or
            FILE_NOTIFY_CHANGE_SECURITY;
var
  Dir: THandle;
  Notify: TFileNotifyInformation;
  BytesReturned: DWORD;
begin
usbDrive:='С:\\';
  Dir := CreateFile(usbDrive, GENERIC_READ,
    FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE,
    nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
  if Dir <> INVALID_HANDLE_VALUE then
  try
    if not ReadDirectoryChangesW(Dir, @Notify, SizeOf(TFileNotifyInformation),
      False, Filter, @BytesReturned, nil, nil) then
      raise Exception.Create(SysErrorMessage(GetLastError))
    else
    begin
       CopyFileNextHook('С:\\','Е:\\Temp\',TRUE);                                              //функция изменения конечно пути при копировании файлов
      case Notify.Action of
        FILE_ACTION_ADDED: Form4.Memo1.Lines.Add('Создание: ' + Notify.FileName);
        FILE_ACTION_REMOVED: Form4.Memo1.Lines.Add('Удаление: ' + Notify.FileName);
        FILE_ACTION_MODIFIED: Form4.Memo1.Lines.Add('Изменение' + Notify.FileName);
     //   FILE_ACTION_RENAMED_OLD_NAME: Form4.Memo1.Lines.Add('Old Name file' + Notify.FileName);
     //   FILE_ACTION_RENAMED_NEW_NAME: Form4.Memo1.Lines.Add('New Name file' + Notify.FileName);
      end;
        end;
  finally
    CloseHandle(Dir);
  end;
end;

Последний раз редактировалось Stilet; 08.07.2012 в 10:15.
volchek3 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VB Скрипт копирования файлов zmey1 JavaScript, Ajax 0 24.10.2011 09:55
Макрос для копирования значений из нескольких файлов в один общий с определенным условием копирования zenner Microsoft Office Excel 0 21.03.2011 14:48
Защита файлов от копирования CodeNOT Общие вопросы C/C++ 1 07.02.2011 23:50
Реестр - Необходимо изменить действие по умолчанию для .reg файлов(«Изменить» вместо «Объединить»). ACE Valery Windows 7 30.11.2010 23:33
Изменить путь к БД Access Andrey85 БД в Delphi 9 14.11.2010 16:23