15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Отслеживаем изменения файловой системы

В API есть несколько функций, позволяющих осуществлять контроль за файловой системой. Так же необходимо подключить компонент TDirWatcher, который содержиться в демонстрационно проекте.

Компилятор: все версии Delphi

Следующий цикл показывает, как можно получать сообщения о изменениях файловой системы:

  var
    ChangeHandle: THandle;
  ...

  ChangeHandle:= FindFirstChangeNotification(PChar(WatchPath), false,
hNotifyFilter);

  if ChangeHandle <> INVALID_HANDLE_VALUE then
    while true do
    begin
      if WaitForSingleObject(ChangeHandle,500) = WAIT_OBJECT_0 then
      begin
        // Событие...
      end;
      FindNextChangeNotification(ChangeHandle);
    end;

Компонент TDirWatcher, используемый в этом цикле, запускается в собственном потоке. При изменениях в указанной дирректории или поддирректории возникает событие OnChange.
TDirWatcher с демо-программкой сдесь.