AdvControl

Функция AdvControl позволяет запрашивать различную информацию и выполнять управляющие действия. Она работает везде: в панелях/редакторе/вьюере.
intptr_t WINAPI AdvControl(
  const GUID *PluginId,
  enum ADVANCED_CONTROL_COMMANDS Command,
  intptr_t Param1,
  void *Param2
);

Параметры

PluginId
Указатель на GUID плагина (для вашего плагина, GUID должен быть таким же, что и в поле GlobalInfo.Guid функции GetGlobalInfoW).
Command
Тип команды. Может быть следующим (перечисление ADVANCED_CONTROL_COMMANDS):
КомандаОписание
ACTL_COMMIT "Фиксирует" действие последней операции с окнами (например, после ACTL_SETCURRENTWINDOW).
Param1 не используется.
Param2 не используется.
Функция возвращает TRUE в случае успеха и FALSE при неудаче.
ACTL_GETARRAYCOLOR Получить все цвета Far Manager.
Param1 размер буфера, в элементах FarColor.
Param2 указатель на буфер плагина, в который будут скопированы текущие цветовые атрибуты.
Param2 = NULL позволяет узнать количество элементов в массиве цветов для копирования.
Функция всегда возвращает количество элементов в массиве цветов.
ACTL_GETCOLOR Получить цвет Far Manager по индексу.
Param1 одна из констант COL_*, описанных в farcolor.hpp
Param2 указывает на переменную типа FarColor, в которую будет помещен соответствующий индексу код цвета.
Функция возвращает TRUE, если удалось получить указанные цветовые атрибуты.
ACTL_GETCURSORPOS Получить информацию о положении курсора относительно окна Far Manager.
Param1 не используется.
Param2 указатель на структуру COORD.
Функция возвращает TRUE, если положение курсора удалось получить, иначе - FALSE.
ACTL_GETFARHWND Возвращает HWND текущего окна Far Manager.
Param1 не используется.
Param2 не используется.
ACTL_GETFARRECT Получить информацию о координатах окна Far Manager в консольном буфере.
Param1 не используется.
Param2 указатель на структуру SMALL_RECT.
Функция возвращает TRUE, если координаты окна Far Manager удалось получить, иначе - FALSE.
ACTL_GETFARMANAGERVERSION Узнать версию Far Manager.
Param1 не используется.
Param2 указывает на переменную типа VersionInfo, в которую будет помещена информация о версии Far Manager.
Функция всегда возвращает TRUE.
ACTL_GETWINDOWCOUNT Возвращает число открытых окон в Far Manager.
Param1 не используется.
Param2 не используется.
Минимальное число окон равно 1 (при запуске Far Manager: в обычном режиме - файловые панели; с ключами -e или -v - редактор или программа просмотра, соответственно).
ACTL_GETWINDOWINFO Получить информацию о конкретном окне Far Manager.
Param1 не используется.
Param2 указатель на структуру WindowInfo.
Функция возвращает TRUE, если окно с номером WindowInfo.Pos существует и FALSE - такого окна нет (поля структуры WindowInfo не заполняются).
WindowInfo.Pos надо инициализировать перед вызовом функции.
Память под WindowInfo.TypeName и WindowInfo.Name плагин должен выделить самостоятельно, требуемые размеры можно получить передав NULL в качестве WindowInfo.TypeName и WindowInfo.Name.
ACTL_GETWINDOWTYPE Получить информацию о типе окна Far Manager.
Param1 не используется.
Param2 указатель на структуру WindowType.
Функция возвращает TRUE, если удалось определить тип окна.
В отличии от ACTL_GETWINDOWINFO эту команду можно вызывать из любых тредов.
ACTL_QUIT Завершение работы Far Manager.
Param1 не используется.
Param2 не используется.
ACTL_REDRAWALL Перерисовка всех окон Far Manager.
Param1 не используется.
Param2 не используется.
ACTL_SETARRAYCOLOR Изменить заданный диапазон цветовой схемы Far Manager.
Param1 не используется.
Param2 указатель на структуру FarSetColors.
Функция возвращает TRUE при успешной замене заданного диапазона цветовой схемы и FALSE для неверно заданных параметров в структуре FarSetColors.
ACTL_SETCURRENTWINDOW Позволяет переключиться в конкретное окно Far Manager.
Param1 число, задающее номер активного окна (нумерация начинается с 0).
Param2 не используется.
Функция возвращает TRUE, если переключение состоялось и FALSE при неудаче (не существует требуемого окна).

Замечание для ACTL_SETCURRENTWINDOW Внимание!

  • Переключение не произойдёт до тех пор, пока не будет вызвана команда ACTL_COMMIT или пока Far Manager не получит управление.
ACTL_SETCURSORPOS Устанавливает положение курсора относительно окна Far Manager.
Param1 не используется.
Param2 указатель на заполненную структуру COORD.
Функция возвращает TRUE, если положение курсора удалось изменить, иначе - FALSE.
ACTL_SETPROGRESSSTATE Устанавливает тип и состояние индикатора прогресса на кнопке Far Manager в панели задач.
Param1 может принимать одно из следующих значений (перечисление TASKBARPROGRESSTATE):
КонстантаОписание
TBPS_NOPROGRESS
TBPS_INDETERMINATE
TBPS_NORMAL
TBPS_ERROR
TBPS_PAUSED
Param2 не используется.
Функция возвращает TRUE.

Замечание для ACTL_SETPROGRESSSTATE Внимание!

  • Работает в Windows 7 и выше. Для подробностей см. http://msdn.microsoft.com - метод ITaskbarList3::SetProgressStat
ACTL_SETPROGRESSVALUE Отображает и корректирует прогресс операции на кнопке Far Manager в панели задач.
Param1 не используется.
Param2 указатель на структуру ProgressValue.
Функция возвращает TRUE.

Замечание для ACTL_SETPROGRESSVALUE Внимание!

  • Работает в Windows 7 и выше. Для подробностей см. http://msdn.microsoft.com - метод ITaskbarList3::SetProgressValue
ACTL_PROGRESSNOTIFY Far Manager выполняет стандартное оповещение о завершении операции (при неактивном окне приложения кратковременное мерцание кнопкой Far Manager в панели задач и последующая подсветка её до получения окном фокуса).
Param1 не используется.
Param2 не используется.
Функция возвращает TRUE.
ACTL_SYNCHRO Позволяет потоку, запущенному плагином, выполнить код в контексте главного потока Far Manager посредством вызова функции ProcessSynchroEventW.
Param1 не используется.
Param2 указатель на данные, передающиеся в функцию ProcessSynchroEventW, может быть NULL.
Функция всегда возвращает 0.

Замечание для ACTL_SYNCHRO Внимание!

  • Проверка на вызов функции ProcessSynchroEventW проводится в GetInputRecord, т.е. гарантированного времени отклика нет, но должно быть достаточно быстро.
ACTL_WAITKEY Ожидать клавишу.
Param1 не используется.
Param2 = NULL - ждём любую клавишу.
Param2 указатель на заполненную структуру INPUT_RECORD (код клавиши) - ждём конкретную клавишу.
Функция всегда возвращает 0.
Param1
Указывает на параметры1 команды. Смотрите описание Command.
Param2
Указывает на параметры2 команды. Смотрите описание Command.

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

Смотрите описание Command.
Смотрите также:
PanelControl, EditorControl, ViewerControl