# MacroControl

Функция `MacroControl` позволяет управлять макрокомандами Far Manager.

    intptr_t WINAPI MacroControl(
      const GUID *PluginId,
      enum FAR_MACRO_CONTROL_COMMANDS Command,
      intptr_t Param1,
      void *Param2
    );

### Параметры

PluginId
Указатель на GUID плагина (для вашего плагина, GUID должен быть таким же, что и в поле `GlobalInfo.Guid` функции GetGlobalInfoW).
Command
Может быть одним из следующих значений (перечисление FAR_MACRO_CONTROL_COMMANDS):

Команда | Описание
--- | ---
MCTL_LOADALL | Загрузить все макросы из файлов в память Far Manager. Предыдущие значения макросов при этом выгружаются, за исключением макросов, добавленных с помощью команды MCTL_ADDMACRO. `Param1` не используется. `Param2` указывает на структуру FarMacroLoad. Для загрузки с параметрами по умолчанию установите в `NULL`. Функция при неудаче вернёт `FALSE`.
MCTL_SAVEALL | Сохранить клавиатурные макросы из памяти Far Manager в файлы. Если пользователь записал с клавиатуры новые макросы, изменил либо удалил существующие, то данные изменения станут постоянными. `Param1` не используется. `Param2` не используется. Функция при неудаче вернёт `FALSE`.
MCTL_SENDSTRING | Выполнить или проверить макрос. `Param1` значение типа FARMACROSENDSTRINGCOMMAND:
Команда | Описание
--- | ---
MSSC_POST | Выполнить макрос. `Param2` указывает на структуру MacroSendMacroText. Функция возвращает `TRUE` - макрос проанализирован и помещен в очередь, и `FALSE` - ошибка (макропоследовательность содержит ошибки). Макропоследовательность начнёт исполняться тогда, когда Far Manager получит управление.
MSSC_CHECK | Проверить макрос. `Param2` указывает на структуру MacroSendMacroText. Функция при неудаче вернёт `FALSE`.
MCTL_EXECSTRING | Исполнить скрипт (строку или файл). `Param1` не используется. `Param2` указывает на структуру MacroExecuteString. Функция при неудаче вернёт `FALSE`.
MCTL_GETLASTERROR | Получить расширенную диагностику об ошибке проверки макроса или скрипта (после исполнения команды `MCTL_SENDSTRING` или `MCTL_EXECSTRING`). `Param1` размер буфера. Указывает максимальное количество байт, которые могут быть записаны в `Param2`. `Param2` указатель на буфер, структуру MacroParseResult, память плагин выделяет самостоятельно. Функция возвращает размер требуемого буфера, при `Param2 = NULL`.
MCTL_GETSTATE | Получить статус работы макродвижка. `Param1` не используется. `Param2` не используется. Функция возвращает одно из значений (перечисление FARMACROSTATE):
Значение | Описание
--- | ---
MACROSTATE_NOMACRO | макродвижок не выполняет никакой макрос в текущий момент
MACROSTATE_EXECUTING | идёт исполнение макроса без передачи кодов клавиш в плагин
MACROSTATE_EXECUTING_COMMON | идёт исполнение макроса; коды клавиш в плагин передаются
MACROSTATE_RECORDING | идёт запись макроса без передачи кодов клавиш в плагин
MACROSTATE_RECORDING_COMMON | идёт запись макроса; коды клавиш в плагин передаются
MCTL_GETAREA | Получить текущую макрообласть. `Param1` не используется. `Param2` не используется. Функция возвращает значение типа `FARMACROAREA`:
Значение | Описание
--- | ---
MACROAREA_OTHER | режим копирования текста с экрана
MACROAREA_SHELL | файловые панели
MACROAREA_VIEWER | внутренняя программа просмотра
MACROAREA_EDITOR | редактор
MACROAREA_DIALOG | диалоги
MACROAREA_SEARCH | быстрый поиск в панелях
MACROAREA_DISKS | меню выбора дисков
MACROAREA_MAINMENU | основное меню
MACROAREA_MENU | прочие меню
MACROAREA_HELP | система помощи
MACROAREA_INFOPANEL | информационная панель
MACROAREA_QVIEWPANEL | панель быстрого просмотра
MACROAREA_TREEPANEL | панель дерева папок
MACROAREA_FINDFOLDER | панель поиска папок
MACROAREA_USERMENU | пользовательское меню
MACROAREA_SHELLAUTOCOMPLETION | список автодополнения в панелях
MACROAREA_DIALOGAUTOCOMPLETION | список автодополнения в диалогах
MACROAREA_COMMON | общая область
MCTL_ADDMACRO | Добавить в память Far Manager макрос. `Param1` игнорируется. `Param2` указывает на структуру MacroAddMacro. Функция при неудаче вернёт `FALSE`.
MCTL_DELMACRO | Удалить из памяти Far Manager макрос, добавленный ранее командой MCTL_ADDMACRO. `Param1` игнорируется. `Param2` указывает на идентификатор удаляемого макроса, поле `Id` структуры MacroAddMacro. Функция при неудаче вернёт `FALSE`.

Param1
Указывает на `Параметр1` команды. Смотрите описание `Command`.
Param2
Указывает на `Параметр2` команды. Смотрите описание `Command`.

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

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

### Пример

Смотрите также:
PanelControl