2011-01-06 7 views
7

Я даже не уверен, что это вписывается в один вопрос, но это является одной проблемой. У меня есть интернет-радиоприемник, написанный на Delphi XE, используя библиотеку BASS для потоковой передачи и воспроизведения звука. Приложение должно запускаться под Windows XP, Vista и 7.Управление громкостью звука приложения в Delphi

Бас позволяет легко управлять глобальным томом, но не имеет возможности заглушить звук, и в целом лучше контролировать громкость для каждого приложения.

Бас также упрощает управление громкостью «канала» (потока), но опять же нет никакого отключения, и это тоже не правильное управление для каждого приложения. (Управление уровнем громкости в микшере Windows не изменяется.)

Я понимаю, что для Vista и выше мне нужен ISimpleAudioVolume и/или IAudioEndpointVolume, но не могу найти реализацию Delphi. Итак, одна часть вопроса: существует ли она как сторонняя библиотека?

Часть вторая: как правильно регулировать громкость и отключать звук (общесистемного или для каждого приложения) на XP, где эти интерфейсы недоступны?

+0

Вам не нужен «реализация Delphi». Просто следуйте официальным документам в MSDN. –

+0

Эти интерфейсы не отображаются в Delphi Xe. А как насчет XP? –

+1

1) Вы можете объявить их самостоятельно. 2) Это может быть проблемой. –

ответ

2

Используйте этот простой код для отключения основного объема он работает на моей машине:

procedure TForm1.Button1Click(Sender: TObject); 
var 
i:Integer; 
begin 
for i:=0 to 100 do 
begin 
    keybd_event($AE, MapVirtualKey($AE,0), 0, 0); 
    keybd_event($AE, MapVirtualKey($AE,0), KEYEVENTF_KEYUP, 0); 
end; 
end; 
+1

Вместо того, чтобы уменьшать громкость, почему бы не отключить звук? [Коды виртуальных ключей] (http://msdn.microsoft.com/en-us/library/dd375731%28v=vs.85%29.aspx) -> 'VK_VOLUME_MUTE' = 0xAD –

+0

, потому что он не работает на моем Платформа? – opc0de

Смежные вопросы