Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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


18:58.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru