Разработка подключаемых модулей для Fmonitor.


Начиная с версии 3.0.0.01 fmonitor поддерживает работу с внешними модулями (плагинами). Эту возможность я добавил прежде всего для себя, чтобы можно было добавлять новые функции в программу не меняя код основного пректа. Тем не менее, если Вы решили написать свой плагин, то в этом файле Вы найдети всю информацию, которая для этого необходима, а в папке /plugin/src - примеры.
Подключаемый модуль это обычная библиотека dll, которая экспортирует определенные функции, список этих функций с описаниями будет преведен далее. Приложение вызывает эти функции вместо встроенных. Плагин должен обязательно экспортировать ВСЕ нижеперечисленные функции, даже если некоторые из них не нужны для Вашей задачи.
Подключаемый модуль должен сам заботиться о сохранении своей конфигурационной информации, файл fmonitor.conf для этого не используется. Если предполагается, что подключаемый модуль будет использоваться для более чем одного задания, то он должен поддерживать список заданий, для идентификации задания используется его имя, которое передается всем экспортируемым функциям.

Экспортируемы функции:

extern "C" __declspec (dllexport) BOOL CALLBACK AddTask(const char* ptaskname = NULL);
/*Добавляет новое задание. При этом должен выводится диалог для конфигурирования задания. Задания с одинаковыми именами не допускаются, т. е. перед тем как добавлять задание плагин должен проверить, может такое уже есть.*/

extern "C" __declspec (dllexport) BOOL CALLBACK InitTask(const char* ptaskname = NULL);
/*Инициализирует задание. Здесь можно например выделить ресурсы под задание и прочитать конфигурационную информацию.*/

extern "C" __declspec (dllexport) BOOL CALLBACK DeleteTask(const char* ptaskname = NULL);
/*Удаляет задание. Эта функция вызывается при завершении приложения. Здесь можно освободить ресурсы задания, но чистить конфигурационную информацию не нужно.*/

extern "C" __declspec (dllexport) BOOL CALLBACK Work(const char* ptaskname = NULL);
/*Здесь собственно выполняется основная функция плагина, например определяется размер свободного места на диске или колличество писем в почтовом ящике.
Возвращает TRUE если по результатам выполнения функции задание должно иметь "сигнальное" состояние (тоесть например объем свободного места на диске меньше допустимого).*/

extern "C" __declspec (dllexport) BOOL CALLBACK Connect(const char* ptaskname = NULL);
/*Вызывается перед тем как задание начнет работать, а также когда пользователь выбирает пункт меню "Восстановить сетевые подключения". Здесь можно подключить сетевой ресурс или запомнить логин/пароль для куда-нибудь. Если Вам все это не нужно, просто возвращайте TRUE.
Возвращает TRUE, если подключение прошло успешно, иначе - FALSE. В последнем случае на индикаторе этого задания будет надпись "OFF".*/

extern "C" __declspec (dllexport) const char* CALLBACK GetTitleStr(const char* ptaskname = NULL);
/*Возвращает указатель на строку, содержащую надпись на индикаторе данного задания (например кол-во писем в ящике).*/

extern "C" __declspec (dllexport) BOOL CALLBACK GetAlertFlag(const char* ptaskname = NULL);
/*Возвращает TRUE - если задание находится в "сигнальном" состоянии.*/

extern "C" __declspec (dllexport) BOOL CALLBACK GetConnectFlag(const char* ptaskname = NULL);
/*Позволяет приложению определить в каком состоянии находится задание - подключенном или не подключенном, ведь связь с сетевым ресурсом со времени последнего вызова Connect могла и пропасть. Возвращает TRUE, если задание подключено, иначе - FALSE. В последнем случае на индикаторе этого задания будет надпись "OFF".*/

extern "C" __declspec (dllexport) BOOL CALLBACK ClearTask(const char* ptaskname = NULL);
/*Удаляет задание из памяти и отчищает конфигурационную информацию о нем. То есть этого задания не будет и после перезапуска программы.*/


Михаил Тихонин
mailto: mihtih@mail.ru
Сайт создан в системе uCoz