# MacroAddMacro

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

    struct MacroAddMacro
    {
      size_t StructSize;
      void *Id;
      const wchar_t *SequenceText;
      const wchar_t *Description;
      FARKEYMACROFLAGS Flags;
      INPUT_RECORD AKey;
      enum FARMACROAREA Area;
      FARMACROCALLBACK Callback;
      intptr_t Priority;
    };

### Элементы

StructSize
Это поле должно содержать размер структуры `MacroAddMacro`. Перед использованием структуры плагин должен заполнить поле.
Id
Уникальный, в рамках плагина, идентификатор макропоследовательности.
SequenceText
Строка, содержащая макрос в текстовом виде.
Если строка начинается с символа `@`, то используется следующий формат: `@<имя файла-скрипта> [<параметры скрипта>]`

- В имени файла допустимо использование переменных окружения.
- Опциональные параметры скрипта представляют список выражений, разделённых запятыми. Выражения должны использовать тот же язык программирования, что и скрипт.
- Пример: `@%MyFarScripts%\calc.lua 'factorial', 3+5`

Description
Строка, содержащая описание макроса.
Flags
Комбинация флагов (тип `FARKEYMACROFLAGS`):

Флаг | Описание
--- | ---
KMFLAGS_ENABLEOUTPUT | Отображать на экране результат работы каждой клавиши.
KMFLAGS_NOSENDKEYSTOPLUGINS | Не передавать клавиши редакторным плагинам (плагинам, экспортирующим функцию ProcessEditorInputW).
KMFLAGS_SILENTCHECK | Не отображать на экране результат проверки макропоследовательности.
KMFLAGS_LANGMASK | Трёхбитовая область, в которой задаётся язык макропоследовательности.
KMFLAGS_LUA | Язык макропоследовательности - Lua (значение по умолчанию).
KMFLAGS_MOONSCRIPT | Язык макропоследовательности - MoonScript.
KMFLAGS_NONE | Нулевой флаг.

AKey
Клавиша вызова макроса, структура INPUT_RECORD.
Area
Макрообласть типа FARMACROAREA, куда поместить макропоследовательность.
Callback
Функция, выполняемая Far Manager перед непосредственным выполнением макропоследовательности `SequenceText`. Синтаксис функции:

     intptr_t (WINAPI *FARMACROCALLBACK)(void *Id,FARADDKEYMACROFLAGS Flags);

Где: `Id` - идентификатор (`MacroAddMacro.Id`). `Flags` - сейчас не используются.
Функция может что-то проверить и вернуть `TRUE` - запустить макрос, или `FALSE` - не запускать.
Priority
Приоритет макроса.

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

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