ActlKeyMacro

Структура ActlKeyMacro используется в функции AdvControl для операций с макрокомандами.
struct ActlKeyMacro {
  int Command;
  union{
    struct {
      char *SequenceText;
      DWORD Flags;
    } PlainText;
    DWORD Reserved[3];
  } Param;
};

Элементы

Command
Одна из команд (перечисление FARMACROCOMMAND):
КомандаОписание
MCMD_LOADALL Считать из реестра в память FAR все макросы с затиранием предыдущих значений.
MCMD_POSTMACROSTRING Передать в FAR макрос в текстовом виде (в том виде, как их хранит FAR Manager в реестре).
Функция AdvControl возвращает TRUE - макрос проанализирован и помещены в очередь, и FALSE - ошибка (макропоследовательность содержит ошибки). Макропоследовательность начнет исполняться тогда, когда FAR получит управление.
MCMD_SAVEALL Принудительное сохранение макросов из памяти FAR в реестр.
MCMD_GETSTATE Получить статус работы макродвижка.
Возвращает одно из значений (перечисление FARMACROSTATE):
ЗначениеОписание
MACROSTATE_NOMACRO макродвижок не выполняет ни какой макрос в текущий момент
MACROSTATE_EXECUTING идет исполнение макроса без передачи кодов клавиш в плагин
MACROSTATE_EXECUTING_COMMON идет исполнение макроса; коды клавиш в плагин передаются
MACROSTATE_RECORDING идет запись макроса без передачи кодов клавиш в плагин
MACROSTATE_RECORDING_COMMON идет запись макроса; коды клавиш в плагин передаются
Компонента Param игнорируется. Значение возвращается функцией AdvControl.
Param.PlainText.SequenceText
Указатель на строку, содержащую макрос в текстовом виде. Макропоследовательность должна быть в OEM-кодировке. Этот член структуры используется для команды MCMD_POSTMACROSTRING.
Param.PlainText.Flags
Комбинация флагов исполнения макропоследовательности (перечисление FARKEYSEQUENCEFLAGS):
ФлагОписание
KSFLAGS_DISABLEOUTPUT Не отображать на экране результат работы каждой клавиши.
KSFLAGS_NOSENDKEYSTOPLUGINS Не передавать клавиши редакторным плагинам (плагинам, экспортирующим функцию ProcessEditorInput).
KSFLAGS_REG_MULTI_SZ Параметр Param.PlainText.SequenceText представлен в формате REG_MULTI_SZ.
REG_MULTI_SZ в реестре:
строка 1\x00
строка 2\x00
...
строка N\x00
\x00
Этот член структуры используется для команды MCMD_POSTMACROSTRING.
Reserved
Зарезервировано.

Замечания

  1. Команды MCMD_LOADALL и MCMD_SAVEALL не будут исполняться во время записи или "проигрывания" макроса.
  2. Флаг KSFLAGS_REG_MULTI_SZ можно не указывать, если в Param.PlainText.SequenceText вместо 0x00 будут стоять '\n'.

Пример

Использование MCMD_POSTMACROSTRING в плагине FARCmds:
command.Command=MCMD_POSTMACROSTRING;
command.Param.PlainText.SequenceText=(char *)malloc(strlen(pCmd)+1);
if(command.Param.PlainText.SequenceText)
{
  command.Param.PlainText.Flags=KSFLAGS_DISABLEOUTPUT;
  strcpy(command.Param.PlainText.SequenceText,pCmd);
  Info.AdvControl(Info.ModuleNumber,ACTL_KEYMACRO,&command);
  free(command.Param.PlainText.SequenceText);
}
Использование MCMD_LOADALL в плагине FARCmds:
command.Command=MCMD_LOADALL;
Info.AdvControl(Info.ModuleNumber,ACTL_KEYMACRO,&command);
Использование MCMD_SAVEALL в плагине FARCmds:
command.Command=MCMD_SAVEALL;
Info.AdvControl(Info.ModuleNumber,ACTL_KEYMACRO,&command);
Смотрите также:
структуры | KeySequence | TActlKeyMacro