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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2007, 05:19   #1
RammFan
Пользователь
 
Регистрация: 26.11.2006
Сообщений: 18
По умолчанию Отслеживает появление в папке файлов. слежение за определенным файлом в определенной папке.

Такая проблема.....
Нужна dll, которая отслеживает появление в папке файлов. Как сделать, чтоб эта dll постоянно следила за определенным файлом в определенной папке?
Пробовал рекурсивную функцию использовать, но возникает переполнение.
Может как-то использовать таймер, но как его реализовать в dll не представляю....
RammFan вне форума Ответить с цитированием
Старый 09.06.2007, 11:09   #2
Rouse_
Пользователь
 
Аватар для Rouse_
 
Регистрация: 31.05.2007
Сообщений: 56
По умолчанию

Код:
 
type
  PFileNotifyInformation = ^TFileNotifyInformation;
  TFileNotifyInformation = record
    NextEntryOffset: DWORD;
    Action: DWORD;
    FileNameLength: DWORD;
    FileName: array [0..MAX_PATH - 1] of WideChar;
  end;
....
procedure TForm1.Test;
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
  Dir := CreateFile('d:\', 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
      case Notify.Action of
        FILE_ACTION_ADDED: Memo1.Lines.Add('New file' + Notify.FileName);
        FILE_ACTION_REMOVED: Memo1.Lines.Add('Delete file' + Notify.FileName);
        FILE_ACTION_MODIFIED: Memo1.Lines.Add('Modify file' + Notify.FileName);
        FILE_ACTION_RENAMED_OLD_NAME: Memo1.Lines.Add('Old Name file' + Notify.FileName);
        FILE_ACTION_RENAMED_NEW_NAME: Memo1.Lines.Add('New Name file' + Notify.FileName);
      end;
  finally
    CloseHandle(Dir);
  end;
end;
Vae Victis
(Горе побежденным (лат.))
Демки с открытым кодом:
http://rouse.drkb.ru
Rouse_ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение имён файлов в папке soonner Общие вопросы Delphi 1 11.12.2009 22:34
Вывести имена файлов, находящихся в папке NSvirus PHP 2 14.10.2009 00:05
Переименование файлов в папке. mr_Smitt Общие вопросы Delphi 1 28.09.2009 17:20
Формирование списка файлов в папке на листе. mephist Microsoft Office Excel 3 12.08.2009 17:59
Просмотр файлов в папке и подпапках Yar Помощь студентам 9 07.08.2007 16:56