PluginsControl

Programming Far Manager plugins

PluginsControl

Функция PluginsControl позволяет управлять сторонними плагинами.
intptr_t WINAPI PluginsControl(
  HANDLE hHandle,
  enum FAR_PLUGINS_CONTROL_COMMANDS Command,
  intptr_t Param1,
  void *Param2
);

Параметры

hHandle
Смотрите описание Command.
Command
Может быть одним из следующих значений (перечисление FAR_PLUGINS_CONTROL_COMMANDS):
КомандаОписание
PCTL_LOADPLUGIN,
PCTL_FORCEDLOADPLUGIN
Загрузить необходимый плагин обычным способом (плагин не всегда грузится в память, данные могут браться из кеша), либо форсировано сразу в память (может понадобиться для межплагинового взаимодействия).
hHandle установите в значение INVALID_HANDLE_VALUE.
Param1 должен быть установлен в одно из значений (перечисление FAR_PLUGIN_LOAD_TYPE):
ТипОписание
PLT_PATH Полный путь с именем dll-файла плагина.
Param2 указывает на строку, содержащую полный путь с именем dll-файла плагина.
Функция возвращает описатель плагина, если плагин удалось загрузить, и NULL - если не удалось.
PCTL_FINDPLUGIN Найти необходимый плагин среди установленных.
hHandle установите в значение INVALID_HANDLE_VALUE.
Param1 должен быть установлен в одно из значений (перечисление FAR_PLUGIN_FIND_TYPE):
ТипОписание
PFM_GUID Искать по значению GUIDа плагина.
PFM_MODULENAME Искать по имени dll-файла плагина.
Param2 указывает либо на структуру с значением GUID, либо на строку, содержащую имя dll-файла плагина.
Функция возвращает описатель найденного плагина, либо NULL, если плагин не удалось найти.
PCTL_UNLOADPLUGIN Выгрузить плагин.
hHandle описатель установленного плагина, его можно получить по команде PCTL_FINDPLUGIN.
Param1 не используется.
Param2 не используется.
Функция возвращает TRUE, если плагин удалось выгрузить.
PCTL_GETPLUGININFORMATION Получить суммарную информацию об установленном плагине.
hHandle описатель установленного плагина, его можно получить по команде PCTL_FINDPLUGIN или PCTL_GETPLUGINS.
Param1 размер буфера под запрошенные данные. Начало буфера - структура типа FarGetPluginInformation, затем следуют компоненты структуры.
Param2 указатель на структуру FarGetPluginInformation, может быть NULL для запроса размера буфера.
Функция возвращает необходимый размер буфера.
PCTL_GETPLUGINS Получить описатели всех установленных плагинов.
hHandle установите в значение INVALID_HANDLE_VALUE.
Param1 количество элементов в массиве Param2.
Param2 массив описателей HANDLE, буфер под данные выделяет плагин, может быть NULL для запроса количества элементов.
Функция возвращает количество установленных плагинов.
Param1
Указывает на Параметр1 команды. Смотрите описание Command.
Param2
Указывает на Параметр2 команды. Смотрите описание Command.

Возвращаемое значение

Смотрите описание Command.

Замечания

Пример

const wchar_t *PlugPath = L"C:\\FAR\\Plugins\\AutoWrap\\AutoWrap.dll";

//загрузим либо выгрузим плагин
if (Load || Unload)
{
  if (Load)
    Info.PluginsControl(INVALID_HANDLE_VALUE,PCTL_LOADPLUGIN,PLT_PATH,PlugPath);
  else
  {
    HANDLE hPlugin = reinterpret_cast(Info.PluginsControl(INVALID_HANDLE_VALUE,PCTL_FINDPLUGIN,PFM_MODULENAME,PlugPath));
    if(hPlugin)
      Info.PluginsControl(hPlugin,PCTL_UNLOADPLUGIN,0,nullptr);
  }
}
Смотрите также: