Плагины
Плагины - дополнительные програмные модули, подключаемые к OpenConf. Представляют из себя dll, размещенные в каталоге config.
Инициализация плагинов производится по разному взависимости от типа плагина.
Принцип обработки следующий:
  • Просмотр каталога config
    При загрузке Конфигуратора OpenConf просматривает каталог config, загружая все dll, которые там расположены.

  • Поиск строкового ресурса с ID=100
    В каждой загруженной dll ищется строковой ресурс с ID=100. Если такой ресурс отсутствует, плагин рассматривается как обычная DLL. В этом случае в dll ищется экспортируемая функция SetConvigService, и если такая функция найдена, то она вызывается, передавая плагину указатель на объект CConfigService, через который плагин может обратиться к различным методам OpenConf.

  • Если строковый ресурс найден,
    OpenConf пытается создать OLE объект с ProgID (CLSID), указанным в ресурсе. Минимальное требование к объекту - поддержка интерфеса IDispatch. Если попытка создать объект с указанным ProgID неудачна, OpenConf пытается зарегистрировать данную dll в реестре, вызывая функцию DllRegisterServer

  • Инициализация загруженных OLE-плагинов.
    Для получения доступа к объектной модели Конфигуратора, плагин должен реализовать интерфейс IConfigPlugin. При выполнении этого условия плагин рассматривается как Совместимый. Для него вызывается метод IConfigPlugin::Init, передавая в качестве параметра объект Configurator. Как результат метода плагин может вернуть свое название, под которым он будет зарегистрирован в списке плагинов. Также для него вызывается IConfigPlugin::GetPluginCaps, запрашивая разнообразные параметры его поведения.

  • Визуальное представление плагина.
    Плагин может представлять из себя ActiveX контрол, который может быть отображен в Конфигураторе.
    Возможны два варианта отображения плагина.
    • Отображение в правой панели страницы OpenConf
      Применяется для ActiveX контролов, не реализующих интерфейс IConfigPlugin, а также если плагин задал такое поведение в методе IConfigPlugin::GetPluginCaps
    • Отображение отдельной вкладкой в окне Конфигурации
      Применяется для ActiveX контролов, реализующих IConfigPlugin, и задавших такое поведение в методе IConfigPlugin::GetPluginCaps

  • Отображение макросов плагина
    Для каждого плагина по умолчанию в дереве OpenConf отображается список его макросов. Для отмены этого плагин должен явно запретить их отображение в методе IConfigPlugin::GetPluginCaps.

  • Иконка плагина
    При отображении плагина в дереве OpenConf использует иконки, размещенные в dll-файле плагина. Если файл не содержит иконок, используется стандартный системный значок. По умолчанию используется иконка, размещенная первой в файле. Плагин может явно указать номер иконки в методе IConfigPlugin::GetPluginCaps.
Типы плагинов и требования к ним.
Обычная DLL