Форум программистов
Правила форума  |  Исходники Delphi  |  Основы Delphi  |  Блог программистов  |  Рассылка  |  Конкурс программистов!


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

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

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

Код:

 
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_ вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


06:47.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.

Создание и продвижение сайтов - "Веб сателлит"    Ссылки

seocraft.ru bsc