# PluginInfo

Структура `PluginInfo` используется для возвращения Far Manager'у информации о плагине в функции GetPluginInfoW.

    struct PluginInfo
    {
      size_t StructSize;
      PLUGIN_FLAGS Flags;
      struct PluginMenuItem DiskMenu;
      struct PluginMenuItem PluginMenu;
      struct PluginMenuItem PluginConfig;
      const wchar_t *CommandPrefix;
    };

### Элементы

StructSize
Это поле должно содержать размер структуры `PluginInfo`. Перед использованием структуры плагин должен заполнить поле.
Flags
Комбинация следующих значений (тип PLUGIN_FLAGS).

Флаг | Описание
--- | ---
PF_PRELOAD | Отменить кеширование параметров плагина и заставить Far Manager всегда загружать плагин в память при старте. Должно быть указано, если необходимо изменять строки в меню "Диск", "Команды внешних модулей" или "Конфигурация модулей" динамически. Этот флаг уменьшает эффективность использования памяти.
PF_DISABLEPANELS | Не показывать плагин в меню "Команды внешних модулей", вызываемом из панелей.
PF_EDITOR | Показывать плагин в меню "Команды внешних модулей", вызываемом из редактора Far Manager.
PF_VIEWER | Показывать плагин в меню "Команды внешних модулей", вызываемом из вьюера Far Manager.
PF_DIALOG | Показывать плагин в меню "Команды внешних модулей", вызываемом из диалога Far Manager.
PF_FULLCMDLINE | Заставляет Far Manager передавать плагину всю командную строку вместе с префиксом `CommandPrefix`. Обязательно использовать этот флаг, если плагин умеет обрабатывать несколько префиксов `CommandPrefix`.
PF_NONE | Нулевой флаг.

DiskMenu
Если плагин добавляет строки в меню "Диск", это поле должно быть равным заполненной структуре PluginMenuItem.
PluginMenu
Если плагин добавляет строки в меню "Команды внешних модулей", это поле должно быть равным заполненной структуре PluginMenuItem.
PluginConfig
Если плагин добавляет строки в меню "Конфигурация модулей", это поле должно быть равным заполненной структуре PluginMenuItem.
CommandPrefix
Плагин может указать в этом поле строку префиксов командной строки, которые будут использоваться для перехвата команд Far Manager. Например, если плагин передал здесь адрес строки `ftp` и пользователь ввёл в командной строке что-то, начинающееся с `ftp:`, то функция OpenW будет вызвана с параметром OPEN_COMMANDLINE.
Если предполагается, что плагин будет обрабатывать несколько командных префиксов, то необходимо указать префиксы, разделённые двоеточием. Например, плагин если обрабатывает префиксы `edit:`, `goto:` и `view:`, то строка должна быть такой:

    CommandPrefix=L"edit:view:goto";

Если вы не хотите добавлять команды к Far Manager'у, установите этот параметр в `NULL`.

### Замечания

1. Все передаваемые в этой структуре данные должны быть правильными после возвращения из GetPluginInfoW, таким образом вы не должны использовать автоматически создаваемые переменные. Используйте статические или глобальные переменные.
2. Структура, передаваемая функции GetPluginInfoW, уже заполнена 0.

Смотрите также:
структуры, PluginMenuItem