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):
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 для запроса количества элементов.Функция возвращает количество установленных плагинов. |
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); } }
Смотрите также: