Управление громкостью звука приложения в Delphi - PullRequest
8 голосов
/ 06 января 2011

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

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

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

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

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

1 Ответ

2 голосов
/ 27 мая 2011

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

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;
...