Как мне изменить громкость звука в c ++ win32? Также как мне включить / отключить звук? Спасибо за помощь!
изменить громкость win32 c ++
Ответы (6)
Два варианта:
Здесь есть ответ на этот вопрос (изменение основного тома с C ++, который также включает SetMute и т. Д.)
Думали ли вы о том, чтобы показать элементы управления громкостью и позволить пользователю? Если да, я могу опубликовать для этого код. (Вы просто используете апплет регулировки громкости.
Используйте 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);
waveOutSetVolume и MixerSetControlDetails изменяют громкость только для вашего приложения в Windows Vista и более поздних версиях.
Если вы хотите изменить основную громкость в Vista и более поздних версиях, найдите IAudioEndpointVolume интерфейс.
Вот сообщение в блоге, которое я написал по этому поводу пару лет назад.
Возможно, вам стоит подумать о том, чтобы НЕ изменять глобальную громкость. Подумайте об этом - если я уменьшу громкость в MediaPlayer, все другие программы по-прежнему будут такими же громкими, как и раньше, и это именно то, что я ожидаю от любой программы - только уменьшить ее СОБСТВЕННУЮ громкость. Конечно могут быть причины менять глобальную громкость, без обид;)
Если все, что вы хотите сделать, это изменить громкость, вы можете использовать коды виртуальных клавиш, чтобы изменить громкость следующим образом:
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));
}
Самый простой способ отключить звук -
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 и более поздних версий.