Мониторинг изменений в директориях и файлах средствами AutoIt

Autoit sysmonitoring Аutoit

Задача: Необходимо проверять наличие новых файлов в папке «С/1» и копировать их в другую папку.

Для решения этой задачи существует UDF AutoIt, использующая системные утилиты windows:

  • ReadDirectoryChangesW — которая извлекает информацию, описывающую изменения в указанном каталоге.
  • SHChangeNotifyRegister  — регистрирует окно для получения уведомлений от файловой системы или командной консоли, если файловая система поддерживает уведомления.

Сочетание этих двух утилит позволяет контролировать большинство функций ввода-вывода в Windows, в том числе:

  • переименование папок и файлов;
  • создание папок и файлов;
  • редактирование папок и файлов;
  • удаление папок и файлов;
  • добавление дисков;
  • удаление дисков.

Информация по этой UDF FileSystemMonitor можно найти на форуме.

СКАЧАТЬ FileSystemMonitor

Список функций FileSystemMonitor :

FileSysMonSetup

Синтаксис:   FileSysMonSetup($monitor_type = 3, $dir_monitor_path = «C:\», $shell_monitor_path = «»)

Параметры: 

$monitor_type  —  тип мониторинга

      1. — Мониторить только директории;
      2. — Мониторить только оболочки(shell)
      3. — Мониторить директории и оболочки;

$dir_monitor_path —  Опционально. Используется для выбора папки мониторинга. По умолчанию это «С\»

$shell_monitor_path — Путь для мониторинга shell. По умолчанию пустой. Это означает что будут отслеживаться общесистемные события оболочки.

Описание:

Изменение пути мониторинга каталогов.

FileSysMonSetDirPath

Синтаксис: _FileSysMonSetDirMonPath($dir_monitor_path = «C:\»)

Параметры: 

$dir_monitor_path — необязательно: путь, используемый для мониторинга каталогов. Путь «C:\» используется, если он не предусмотрен.

Описание:

Изменение пути мониторинга каталогов

FileSysMonSetShellMonPath

Синтаксис: _FileSysMonSetShellMonPath($dir_monitor_path = «»)

Параметры: 

$dir_monitor_path-необязательно: путь, используемый для мониторинга оболочки. Путь «» используется, если он не предусмотрен.

Описание:

Изменение пути мониторинга Shell

FileSysMonDirEventHandler

Синтаксис: _FileSysMonDirEventHandler()

Описание:

Отслеживает файловую систему на предмет изменений в заданном каталоге. Если происходит событие изменения, вызывается определяемая пользователем функция «_FileSysMonActionEvent».

Эта функция использует функцию операционной системы Win32 «ReadDirectoryChangesW» для слежкой за изменениями в каталоге.
Функция ReadDirectoryChangesW, по-видимому, ставит события в очередь, так что всякий раз, когда она вызывается, все необработанные события извлекаются по одному за раз.
Необходимо вызвать функцию «_FileSysMonSetup» с типом $monitor_type
либо 1, либо 3, перед вызовом этой функции.
Вызов этой функции должен быть вставлен в основной цикл сообщений скрипта на основе графического интерфейса пользователя.
Определяемая пользователем функция для действия событий должна быть создана пользователем в вызывающем скрипте и должна быть определена следующим образом:

FileSysMonShellEventHandler

Синтаксис: _FileSysMonShellEventHandler($hWnd, $Msg, $wParam, $lParam)

Параметры: 

$hWnd — дескриптор окна графического интерфейса пользователя, в котором появляется сообщение.
$Msg — идентификатор сообщения Windows.
$wParam — первый параметр сообщения в виде шестнадцатеричного значения.
$lParam — второй параметр сообщения в виде шестнадцатеричного значения.

Описание:

Отслеживает события оболочки в файловой системе.

Если каталог был предоставлен в «_FileSysMonSetup», то только события в
этот каталог будет пойман. Если каталог не был предоставлен, то будут пойманы общесистемные события. Эта функция использует функциональность операционной системы Win32 «SHChangeNotifyRegister» для мониторинга системы или каталога на предмет изменений, связанных с оболочкой Windows. Перед вызовом этой функции необходимо вызвать функцию «_FileSysMonSetup» с типом $monitor_type либо 2, либо 3.
Вызов этой функции не требуется. Он запускается автоматически для каждого нового события оболочки. Определяемая пользователем функция для действия событий должна быть создана пользователем в вызывающем скрипте и должна быть определена следующим образом:

Простой пример работы UDF

Следующий пример показывает, как работает эта библиотека. Идет мониторинг папки «C:\1\» и как только в ней происходит событие связанное с созданием, редактированием или удалением файла или папки, то в консоли отобразится соответствующие сообщение.

 

Добавить комментарий