# ViewerControl

Функция `ViewerControl` позволяет запрашивать различную информацию о встроенной программе просмотра Far Manager и управлять её состоянием.

    intptr_t WINAPI ViewerControl(
      intptr_t ViewerID,
      enum VIEWER_CONTROL_COMMANDS Command,
      intptr_t Param1,
      void *Param2
    );

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

ViewerID
Идентификатор экземпляра вьюера (текущий вьюер: `-1`). Каждый экземпляр встроенной программы просмотра имеет уникальный идентификатор, который не повторяется в текущей сессии Far Manager.
Command
Тип команды. Может быть одним из следующих (перечисление VIEWER_CONTROL_COMMANDS):

Команда | Описание
--- | ---
VCTL_GETINFO | Получить информацию о программе просмотра. `Param1` не используется. `Param2` указывает на структуру ViewerInfo. Всегда возвращается `TRUE`.
VCTL_QUIT | Закрыть программу просмотра. `Param1` и `Param2` должны быть `NULL`. Всегда возвращается `TRUE`.
VCTL_REDRAW | Перерисовать окно программы просмотра. `Param1` и `Param2` должны быть `NULL`. В случае успеха возвращается `TRUE`.
VCTL_SETKEYBAR | Функция, позволяющая управлять поведением строки функциональных клавиш в программе просмотра. `Param1` не используется. `Param2 = NULL` - восстановить предыдущее значение `Param2 = -1` - обновить полосу (перерисовать) `Param2` равен указателю на структуру FarSetKeyBarTitles, новое значение. В случае успеха возвращается `TRUE`.
VCTL_SELECT | Управление выделением. `Param1` не используется. `Param2` указывает на структуру ViewerSelect. Если `Param2 = NULL`, произойдёт сброс выделения. В случае успеха возвращается `TRUE`.
VCTL_SETMODE | Изменить режим работы программы просмотра. `Param1` не используется. `Param2` указывает на структуру ViewerSetMode. В случае успеха возвращается `TRUE`.
VCTL_SETPOSITION | Установить позицию в файле. `Param1` не используется. `Param2` указывает на структуру ViewerSetPosition. В случае успеха возвращается `TRUE`.
VCTL_GETFILENAME | Получить имя открытого во вьюере файла. `Param1` - размер буфера в символах, который выделил плагин для данных. `Param2` указывает на буфер, выделенный плагином, куда будет помещено имя файла. Функция возвращает требуемый размер буфера в символах, с учетом завершающего нуля. Если `Param2 = NULL` или `Param1` меньше требуемого размера, функция просто вернет необходимый размер буфера.

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

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

Смотрите описание конкретной команды.

### Примечание

`VCTL_QUIT` в информационной панели и панели быстрого просмотра не приводит к закрытию программы просмотра.
Смотрите также:
Сервисные функции, ViewerInfo, ViewerSetPosition, ViewerSelect