Работа с дистанционно управление
За решаването на първия проблем, който имаме като хардуер е с ТВ тунер Ето TV H6 с дистанционното управление. За да работите с устройството за дистанционно управление е проектиран библиотека BeholdRC.dll, описание на изнесените функции, както и пример за работата на Delphi, ние може да намерите на интернет страницата на разработчика. Въпреки това, само няколко функции. Информация клавиши подготовка може да се реализира по два начина, или проверка на състоянието на таймера, или да използвате отделна нишка. Вторият вариант е по-интересна и ефективна. Така че изпълнява класа ще се нарича TRemoteVolumeControl, и е наследник TThread. На този етап на развитие, основната форма кодът ще бъде отговорен за три неща:- Създаване TRemoteVolumeControl обект, когато приложението започва
- Получаване на съобщения за натискане на бутоните за сила на звука, за да се промени (по възможност да се актуализира програмата интерфейс)
- Zavereshnie поток при затваряне на програмата
звук Control
Всъщност, никога не съм мислил за това, как да промените силата на звука в системата. И така, той отиде да учи в документацията. Но подробностите не вървят. Аз разбирам, че като се започне с Windows Vista, добри практики на управление са се променили драстично. Този раздел ни казва MSDN Ядро Audio API. Контрол на звука, което можем на глобално ниво, или да се променя само неговата аудио поток. Ние сме заинтересовани в първия вариант. За работа, ние се нуждаем от определен брой интерфейси: IMMDeviceEnumerator, е колекция от мултимедийни устройства; IMMDevice представлява едно устройство и IAudioEndpointVolume интерфейс за контрол на звука. За съжаление Delphi не съдържа описание на интерфейса, така че взе да се пренапише заглавията mmDeviceApi.h EndpointVolume.h (резултати, прикрепени към края на статията). В Google можете да намерите mmDevApi.pas файл с описание на интерфейсите за Delphi, но го описва само тези интерфейси, които трябва да промените силата на звука, но не напълно подходящи заглавни файлове. Заслужава да се отбележи, че използването на тези интерфейси, ние можем не само да контролирате силата на звука, но и да бъдат уведомени, че обемът е променен (IAudioEndpointVolumeCallback). Сега, за да бъда кратък, нашата функция InitVolumeControl трябва да получите препратка към IAudioEndpointVolume интерфейс, който ще предприемем: Сега можем да се опише функция RCKeyPress. На първо място, ние уведомява формата на клавиши, да я изпратите на кода. След това, в зависимост от ключа натиснат, ние или увеличаване / намаляване на звука (VolumeStepUp / VolumeStepDown). Когато натиснете бутона за спиране, трябва да се определи текущото състояние и да го обърнете. Кликвайки върху бутона за захранване, можем да изпратим под формата на WM_CLOSE съобщение, въпреки че ние имаме вече уведомен бутон кода Submit. Сега нашата молба може да се промени цялостната силата на звука в Window Vista 7. Бих искал да приложи някакъв хубав интерфейс за това, с ясна форма и модел динамика, но аз знам как да направя такова нещо в Direct2D. За изправени пред последен път на проблема. Сорс кодът на класа е описано, както и MMDeviceAPI и EndpointVolume файлове определящи интерфейса могат да бъдат изтеглени тук.