PluginsControl позволяет управлять сторонними плагинами.
intptr_t WINAPI PluginsControl( HANDLE hHandle, enum FAR_PLUGINS_CONTROL_COMMANDS Command, intptr_t Param1, void *Param2 );
Command.| Команда | Описание | ||||||
|---|---|---|---|---|---|---|---|
| PCTL_LOADPLUGIN, PCTL_FORCEDLOADPLUGIN |
Загрузить необходимый плагин обычным способом (плагин не всегда грузится в память, данные могут браться из кеша), либо форсировано сразу в память (может понадобиться для межплагинового взаимодействия).hHandle установите в значение INVALID_HANDLE_VALUE.Param1 должен быть установлен в одно из значений (перечисление FAR_PLUGIN_LOAD_TYPE):
Param2 указывает на строку, содержащую полный путь с именем dll-файла плагина.Функция возвращает описатель плагина, если плагин удалось загрузить, и NULL - если не удалось. | ||||||
| PCTL_FINDPLUGIN | Найти необходимый плагин среди установленных.hHandle установите в значение INVALID_HANDLE_VALUE.Param1 должен быть установлен в одно из значений (перечисление FAR_PLUGIN_FIND_TYPE):
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 для запроса количества элементов.Функция возвращает количество установленных плагинов. |
Параметр1 команды. Смотрите описание Command.Параметр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);
}
}