изменить громкость win32 c ++ - PullRequest
9 голосов
/ 31 марта 2009

Как мне изменить громкость звука в c ++ win32? Кроме того, как бы я отключить / включить звук? Спасибо за помощь!

Ответы [ 6 ]

12 голосов
/ 31 марта 2009

Используйте API waveOutSetVolume.

Вот пример:

  DWORD dwVolume;

  if (waveOutGetVolume(NULL, &dwVolume) == MMSYSERR_NOERROR)
    waveOutSetVolume(NULL, 0); // mute volume

  // later point in code, to unmute volume...
  waveOutSetVolume(NULL, dwVolume);
5 голосов
/ 04 апреля 2009

waveOutSetVolume и mixerSetControlDetails только изменяют громкость для вашего приложения в Windows Vista и выше.

Если вы хотите изменить основной уровень громкости в Vista и выше, найдите интерфейс IAudioEndpointVolume .

Вот сообщение в блоге, которое я написал об этом пару лет назад.

3 голосов
/ 31 марта 2009

Возможно, вам следует подумать, чтобы НЕ изменять общий объем. Подумайте об этом - если я уменьшу громкость в MediaPlayer, все остальные программы будут по-прежнему такими же громкими, как и раньше, и это именно то, что я ожидаю от любой программы, - только понизить свою собственную громкость. Конечно, могут быть причины для изменения общего объема, без обид;)

1 голос
/ 19 июня 2014

Если все, что вы хотите сделать, это изменить громкость, то вы можете использовать коды виртуальных клавиш, чтобы изменить громкость следующим образом:

void changeVolume()
{
  INPUT ip={0};
  ip.type = INPUT_KEYBOARD;
  ip.ki.wVk = VK_VOLUME_UP;   //or VOLUME_DOWN or MUTE
  SendInput(1, &ip, sizeof(INPUT));
  ip.ki.dwFlags = KEYEVENTF_KEYUP;
  SendInput(1, &ip, sizeof(INPUT));
}
0 голосов
/ 20 июня 2014

Самый простой способ выключить звук -

const int APPCOMMAND_VOLUME_MUTE = 0x80000;
SendMessage(this.Handle, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)APPCOMMAND_VOLUME_MUTE);

Аналогичным образом вы можете вызвать поведение клавиш + Volume и -Volume. Взгляните на http://www.blackwasp.co.uk/BasicVolumeControl.aspx и http://msdn.microsoft.com/en-us/library/windows/desktop/ms646247%28v=vs.85%29.aspx

Существуют также значения для таких вещей, как регулировка громкости микрофона, но я их не пробовал.

Если вам нужен больший контроль над системным томом, вы должны проверить версию Windows и выполнить 2 версии кода:
Что-то вроде вышеупомянутого Изменение уровня общей громкости для Win XP.
Что-то вроде https://stackoverflow.com/a/3437069/1365066 для Vista и выше.

...