API Light Alloy

В Light Alloy существует возможность получать системные сообщения от сторонней программы, используя API Light Alloy. Это позволяет упомянутой сторонней программе просто и точно управлять проигрывателем без эмуляции нажатий клавиатуры и мышки. Среди программ, которые используют API для управления Light Alloy — Remotty и RC Assistant.

Управление Light Alloy через API

Управление Light Alloy через API, осуществляется путём отправки сообщений окну c названием класса LightAlloyFront.

Номер сообщения = WM_APP + 2504 (0x89C8)

Ниже перечислены команды, которые понимает Light Alloy:

LAC_FILE_OPEN = 50; //Открыть файл
LAC_FILE_OPEN_URL = 51; //Открыть URL
LAC_FILE_PLAY_DVD_DISC = 52; //Открыть DVD/Blu-ray/Audio CD диск
LAC_FILE_OPEN_DVD_FOLDER_NO_MENU = 53; //Открыть DVD без меню
LAC_FILE_OPEN_DVD_FOLDER = 54; //Открыть папку с DVD/Blu-ray
LAC_FILE_OPEN_TV = 55; //Полноэкранное меню открытия файлов
LAC_FILE_PLAY_CDDVD = 56; //Открыть CD/DVD диск
LAC_FILE_PLAY_BD_DISC = 57; //Открыть Blu-ray диск
LAC_FILE_PLAY_AUD_DISC = 58; //Открыть Audio CD диск
LAC_APPLICATION_HISTORY = 59; //Расширенная история файлов
LAC_FILE_INFO = 60; //Информация о файле
LAC_FILE_OSD_INFO = 61; //Информация о файле на экране
LAC_FILE_INFO_PLAYLIST = 62; //Информация о файле
LAC_FILE_OPEN_RADIOVIEWER = 63; //Каталог интернет радиостанций
LAC_FILE_RADIO_ON_OFF = 64; //Радио: включить/выключить
LAC_FILE_RADIO_RECSTART = 65; //Радио: начать запись
LAC_FILE_RADIO_RECSTOP = 66; //Радио: остановить запись

LAC_PLAYBACK_PLAY = 100; //Воспроизведение
LAC_PLAYBACK_STOP = 101; //Пауза
LAC_PLAYBACK_STOP_PLAY = 102; //Воспроизведение / Пауза
LAC_PLAYBACK_REAL_STOP = 103; //Стоп
LAC_PLAYBACK_SPEED_PLAY = 104; //Скорость воспроизведения
LAC_PLAYBACK_FILTERS = 105; //Дерево фильтров
LAC_PLAYBACK_SPEED_PLAY_UP = 106; //Скорость воспроизведения
LAC_PLAYBACK_SPEED_PLAY_DN = 107; //Скорость воспроизведения

LAC_SEEK_FRAME_STEP = 150; //Кадр вперед
LAC_SEEK_FRAME_BACK = 151; //Кадр назад
LAC_SEEK_FORWARD = 152; //Перемотка вперед
LAC_SEEK_BACKWARD = 153; //Перемотка назад
LAC_SEEK_JUMP_FORWARD = 154; //Прыжок вперед
LAC_SEEK_JUMP_BACKWARD = 155; //Прыжок назад
LAC_SEEK_SUBTITLE_NEXT = 156; //Субтитр вперед
LAC_SEEK_SUBTITLE_PREV = 157; //Субтитр назад
LAC_SEEK_REWIND = 158; //Перемотать в начало
LAC_SEEK_SET_BOOKMARK = 159; //Установить закладку
LAC_SEEK_LAST_POS = 160; //Перемотка на место остановки
LAC_SEEK_A_B = 161; //Повтор отрезка А-B
LAC_SEEK_SET_O = 162; //Отметить начало автопромотки
LAC_SEEK_SET_E = 163; //Отметить конец автопромотки
LAC_SEEK_SET_OE = 164; //Отметить завершение заставки
LAC_SEEK_SET_EO = 165; //Отметить начало окончания
LAC_SEEK_SHOW_OE_PROPS = 166; //Настройки автопромотки

LAC_WINDOW_CONTROL_PANEL = 200; //Панель управления
LAC_WINDOW_STAY_ON_TOP = 201; //Поверх всех окон
LAC_WINDOW_MINIMIZE = 202; //Минимизировать
LAC_WINDOW_MAXIMIZE = 203; //Максимизировать
LAC_WINDOW_FULLSCREEN = 204; //Окно / Весь экран
LAC_WINDOW_ORIGINAL = 205; //Первоначальный размер
LAC_WINDOW_PLAYLIST = 206; //Список
LAC_WINDOW_EX_PLAYLIST = 207; //Внешний список
LAC_WINDOW_ADVDIR = 208; //Режим плейлиста
LAC_WINDOW_PLAYLIST_SIZE = 209; //Размер плейлиста
LAC_WINDOW_ADVDIR_DIR_SIZE = 210; //Размер панели каталогов
LAC_WINDOW_GET_USER_SIZE = 211; //Сохранить положение и размеры плеера
LAC_WINDOW_SET_USER_SIZE = 212; //Загрузить положение и размеры плеера
LAC_WINDOW_HIDE_FROM_BOSS = 213; //Анти-шеф

LAC_PLAYLIST_SHOW_HIDE_SEARCH = 250; //Поле поиска: показать / скрыть
LAC_PLAYLIST_ADVDIR_FAVORITE = 251; //Режим Каталогов — Избранное
LAC_PLAYLIST_ADVDIR_GO_MYPATH = 252; //Режим Каталогов — Любимая папка
LAC_PLAYLIST_PLAY = 253; //Проиграть выбранный
LAC_PLAYLIST_NEXT = 254; //Следующий по списку
LAC_PLAYLIST_PREV = 255; //Предыдущий по списку
LAC_PLAYLIST_ADD_FILES = 256; //Добавить файл
LAC_PLAYLIST_ADD_FOLDER = 257; //Добавить папку в список
LAC_PLAYLIST_DELETE = 258; //Удалить из списка
LAC_PLAYLIST_DELETE_FILE = 259; //Удалить файл
LAC_PLAYLIST_CLEAR = 260; //Очистить список
LAC_PLAYLIST_SAVE = 261; //Сохранить список
LAC_PLAYLIST_REPORT = 262; //Таблица по списку
LAC_PLAYLIST_MOVE_UP = 263; //Переместить выше
LAC_PLAYLIST_MOVE_DOWN = 264; //Переместить ниже
LAC_PLAYLIST_SORT = 265; //Отсортировать список
LAC_PLAYLIST_VISUALSHUFFLE = 266; //Перемешать список
LAC_PLAYLIST_SHUFFLE = 267; //Случайный порядок воспроизведения
LAC_PLAYLIST_REPEAT = 268; //Повтор списка
LAC_PLAYLIST_REPEAT_FILE = 269; //Повтор файла
LAC_PLAYLIST_BOOKMARKS = 270; //Закладки в списке
LAC_PLAYLIST_JUMP = 271; //Перейти к файлу
LAC_PLAYLIST_SEARCH_FILE = 272; //Показать расположение файла
LAC_PLAYLIST_RENAME_FILE = 273; //Переименовать файл или закладку

LAC_VIDEO_PROPERTIES = 300; //Опции видео
LAC_VIDEO_SCREENSHOT = 301; //Сохранить скриншот
LAC_VIDEO_SCREENSHOT_CB = 302; //Копировать скриншот в буфер обмена
LAC_VIDEO_SAVE_THUMBNAILS = 303; //Сохранить миниатюры
LAC_VIDEO_SAVE_SCREENS_PACK = 304; //Сохранить пакет полноразмерных скриншотов
LAC_VIDEO_OPEN_SCR_FOLDER = 305; //Открыть папку со снимками с экрана
LAC_VIDEO_SCALE_50 = 306; //Масштаб 50%
LAC_VIDEO_SCALE_100 = 307; //Масштаб 100%
LAC_VIDEO_SCALE_150 = 308; //Масштаб 150%
LAC_VIDEO_SCALE_200 = 309; //Масштаб 200%
LAC_VIDEO_RATIO_ASIS = 310; //Пропорции как есть
LAC_VIDEO_RATIO_16_9 = 311; //Пропорции 16:9
LAC_VIDEO_RATIO_4_3 = 312; //Пропорции 4:3
LAC_VIDEO_RATIO_WIDTH = 313; //Пропорции по ширине
LAC_VIDEO_RATIO_HEIGHT = 314; //Пропорции по высоте
LAC_VIDEO_RATIO_CUSTOM = 315; //Пропорции особые
LAC_VIDEO_RATIO_CUSTOM_SET = 316; //Пропорции особые
LAC_VIDEO_RATIO_FREE = 317; //Без сохранения пропорций
LAC_VIDEO_RATIO_PIXEL = 318; //Пропорции Пиксель-в-Пиксель
LAC_VIDEO_ZOOM_IN = 319; //Увеличить изображение
LAC_VIDEO_ZOOM_OUT = 320; //Уменьшить изображение
LAC_VIDEO_BRIGHTNESS_INC = 321; //Прибавить яркость
LAC_VIDEO_BRIGHTNESS_DEC = 322; //Убавить яркость
LAC_VIDEO_CONTRAST_INC = 323; //Прибавить контрастность
LAC_VIDEO_CONTRAST_DEC = 324; //Убавить контрастность
LAC_VIDEO_SATURATION_INC = 325; //Прибавить насыщенность
LAC_VIDEO_SATURATION_DEC = 326; //Убавить насыщенность
LAC_VIDEO_COLOR_RESET = 327; //Сбросить цветовые настройки
LAC_VIDEO_SETS_RESTORE = 328; //Сбросить настройки масштаба и размеров
LAC_VIDEO_RATIO_SWITCH = 329; //Переключить пропорции
LAC_VIDEO_DEBUG_OSD = 330; //Показать техническое OSD по видео
LAC_VIDEO_OSD_INFO_CB = 331; //Сохр. OSD-инфо фильма в буфер обмена
LAC_VIDEO_SUBS_DEBUG_OSD = 332; //Показать техническое OSD по субтитрам
LAC_VIDEO_SHOW_STATS = 333; //Показывать техническую статистику
LAC_VIDEO_USE_VSYNC = 334; //Разрешить VSync
LAC_VIDEO_USE_ACCURVSYNC = 335; //Использовать аккуратный VSync
LAC_VIDEO_USE_ALTERVSYNC = 336; //Использовать альтернативный VSync
LAC_VIDEO_FLUSHGPU_BEF_VS = 337; //Заполнить GPU перед VSync
LAC_VIDEO_FLUSHGPU_AFT_PR = 338; //Заполнить GPU после представления
LAC_VIDEO_FLUSHGPU_WAIT = 339; //Ожидать заполнения GPU
LAC_VIDEO_USE_FRAME_TC = 340; //Включить коррекцию времени кадра
LAC_VIDEO_DIS_AERO = 341; //Отключить эффекты рабочего стола
LAC_VIDEO_USE_16_235_OR = 342; //Использовать диапазон вывода 16-235
LAC_VIDEO_PAN_SCAN_LEFT = 343; //Сдвинуть картинку влево
LAC_VIDEO_PAN_SCAN_RIGHT = 344; //Сдвинуть картинку вправо
LAC_VIDEO_PAN_SCAN_UP = 345; //Сдвинуть картинку вверх
LAC_VIDEO_PAN_SCAN_DOWN = 346; //Сдвинуть картинку вниз

LAC_SUBTITLES_LOAD = 350; //Загрузить субтитры
LAC_SUBTITLES_LOAD_TV = 351; //Полноэкранное меню загрузки субтитров
LAC_SUBTITLES_SHOW = 352; //Отображать субтитры
LAC_SUBTITLES_SWITCH = 353; //Переключить субтитры
LAC_SUBTITLES_SHOW2 = 354; //Отображать субтитры №2
LAC_SUBTITLES_SWITCH2 = 355; //Переключить субтитры №2
LAC_SUBTITLES_PROPERTIES = 356; //Опции субтитров
LAC_SUBTITLES_TS_INC = 357; //Увеличить сдвиг субтитров
LAC_SUBTITLES_TS_DEC = 358; //Уменьшить сдвиг субтитров
LAC_SUBTITLES_EXPLORER = 359; //Обозреватель субтитров
LAC_SUBTITLES_FONT_INC = 360; //Сделать субтитры крупнее
LAC_SUBTITLES_FONT_DEC = 361; //Сделать субтитры мельче

LAC_SOUND_ADD = 400; //Загрузить звуковую дорожку
LAC_SOUND_SWITCH_STREAM = 401; //Переключить звуковую дорожку
LAC_SOUND_PROPERTIES = 402; //Опции звука
LAC_SOUND_VOLUME_INC = 403; //Увеличить громкость
LAC_SOUND_VOLUME_DEC = 404; //Уменьшить громкость
LAC_SOUND_MUTE = 405; //Отключить звук
LAC_SOUND_TS_MINUS = 406; //Сдвинуть звук назад
LAC_SOUND_TS_PLUS = 407; //Сдвинуть звук вперёд
LAC_SOUND_PITCH_INC = 408; //Увеличить питч звука
LAC_SOUND_PITCH_DEC = 409; //Уменьшить питч звука
LAC_SOUND_PITCH_DEF_ONE = 410; //Дефолтный питч звука для текущей скорости
LAC_SOUND_PITCH_DEF_ALL = 411; //Дефолтный питч звука для всех скоростей

LAC_APPLICATION_PREFERENCES = 450; //Настройки
LAC_APPLICATION_HELP = 451; //Помощь
LAC_APPLICATION_ABOUT = 452; //О программе
LAC_APPLICATION_EXIT = 453; //Выход
LAC_APPLICATION_MONITOR_OFF = 454; //Выключить монитор
LAC_APPLICATION_POWER_OFF = 455; //Выключить компьютер
LAC_APPLICATION_POW_ONPLDONE = 456; //Выкл. компьютер по окончанию списка
LAC_APPLICATION_HIBERNATE = 457; //Спящий режим
LAC_APPLICATION_HIB_ONPLDONE = 458; //Спящий режим по окончанию списка
LAC_APPLICATION_MEDIAHISTORY_CLEAR = 459; //Очистить медиа-историю
LAC_APPLICATION_CLEAR_MEDIA_SETTINGS = 460; //Очистить медиа-настройки и кэш
LAC_APPLICATION_WL_KEYS_REMINDER = 461; //Напомнить назначенные WinLIRC команды
LAC_APPLICATION_SCHEDULER = 462; //Планировщик
LAC_APPLICATION_SLEEP = 463; //Ждущий режим
LAC_APPLICATION_AGENT_CLOSE = 464; //Закрыть LAAgent.exe

LAC_NAVIGATION_TITLE = 500; //Заглавное меню
LAC_NAVIGATION_ROOT = 501; //Корневое меню
LAC_NAVIGATION_SUBS = 502; //Меню субтитров
LAC_NAVIGATION_AUDIO = 503; //Меню аудио
LAC_NAVIGATION_ANGLE = 504; //Меню ракурсов видео
LAC_NAVIGATION_SCENES = 505; //Меню сцен
LAC_NAVIGATION_PREV = 506; //Предыдущая глава
LAC_NAVIGATION_NEXT = 507; //Следующая глава

Пример использования API Light Alloy

Ниже представлены два скрипта AutoIt3, которые выполняют одно и то же. Отличие только в том, что первый чуть меньше места на диске занимает, а второй чуть понятнее:

#include <SendMessage.au3>
$hWnd = WinWait(«[CLASS:LightAlloyFront]», «», 0)
_SendMessage
($hwnd, 0x89C8, 100)

#include <SendMessage.au3>
Local Const $LAC_PLAYBACK_PLAY = 100
$hWnd = WinWait(«[CLASS:LightAlloyFront]», «», 0)
_SendMessage
($hwnd, 0x89C8, $LAC_PLAYBACK_PLAY)