Через сообщения windows (Sendmessage/Postmessage) предоставляется довольно развлетленное управление Behold TV. Но вот про текущее состояние, кроме уровня громкости и номера ПО, не удастся узнать ничего. Странно... Получается игра в одни ворота, пнул мяч, а попадет он или нет и вообще что с ним дальше - х.з.
Возьмем запись. Для этого есть (отдельно для аудио и видео): триггеры запустить-остановить и пауза-продолжить, команды запустить и остановить. Как легко догадаться состояние триггеров во внешней программе (внешнем управлении) может легко поменяться местами, т.е. вместо останова пойдет запись и наоборот. Это может произойти например при внешнем вмешательстве (нажатии соотв. кнопок в окне Behold) или в силу внутренних причин (останов (сбой) записи, но управляющая программа по-прежнему будет считать что запись ведется, а вторичный посыл тригера, с точки зрения внешнего управляния, для останова, напротив, начнет ее).
Есть еще замечания: команда "остановить запись" обрабатывается всегда, даже при просмотре происходит переинициализация. Сам Behold TV "спасается" от этого только с помощью disable стопа.
Итого, кроме "защиты от дурака", для адекватного контроля над тюнером просто необходима обратная связь.
для этого требуется знать:
1) текущий канал (необходимость этого в форуме уже упоминали), информация о нем (название, частота и т.д.)
2) источник (Tuner, FM, VHS, S-VHS)
3) текущее состояние (просмотр, запись, таймшифт)
4) если запись то что: аудио, видео, серия снимков
5) информация о записи (статистика)
6) общее кол-во каналов
Добавление обработки запроса - пара строчек, странно что это не было сделано ранее. За образцами далеко ходить не надо - SDK Winamp начиная с 2.xx. По аналогии к примеру можно ввести:
WMBH_GETSTATUS возвращать 0 если просмотр, 1 - таймшифт, 2 - запись;
WMBH_GETSOURCE 0 - Tuner, 1 - FM, 2 - VHS, 3 - S-VHS;
WMBH_GETVIDEORECORD (WMBH_GETAUDIORECORD) возвращать 0 - если не идет запись видео (аудио), 1 - пауза записи, 2 - запись;
WMBH_GETCHANNELNUM, WMBH_GETCHANNELFREQ, WMBH_GETCHANNELNAME и т.д.
P.S. правда с возвратом pointer строк (название канала) например в jsript, vbscript и некоторых других - траблы (выше идет речь именно про управление сторонними программами на скриптах, если писать полноценное приложение, то часть, но не все! вопросов естественно снимается), но все равно можно передать строку таким образом:
SendMessage (hBhWnd, WM_BHCMD, WMBH_GETCHANNELNAME, param)
где param=-1 - возвращает ссылку на строку как обычно
param=0 - возвращает длину строки
param=1,2... и т.д. - соответствующий (первый, второй и т.д.) символ строки (таким образом можно последовательно передать строку известной длины в виде массива)
P.P.S. Перечитал. Много я запросил...

но это необходимый полноценный минимум для управления. Может что-то уже введено, но не отражено в API, можете огласить?
P.P.P.S. да еще! по нажатию Enter вызывается видеомикшер в OSD, триггер WMBH_SELVOLMODE - это "старый" вариант, новый вариант в месседж известен?
(пользую Behold TV X7 с версией btv 5.07)