2014-01-12 2 views
1

Я хочу, чтобы изменить уровень громкости с помощью функцииC++ WinAPI waveOutSetVolume()

MMRESULT waveOutSetVolume(
    HWAVEOUT hwo, 
    DWORD dwVolume 
); 

hwo 
Handle to an open waveform-audio output device. This parameter can also be a device identifier. 

Как создать обработчик для Master Volume?

dwVolume 
Specifies a new volume setting. The low-order word contains the left-channel volume setting, and the high-order word contains the right-channel setting. A value of 0xFFFF represents full volume, and a value of 0x0000 is silence. 
If a device does not support both left and right volume control, the low-order word of dwVolume specifies the volume level, and the high-order word is ignored. 

Как передать объем (например, 75) функции?

Пытается так: How to change master volume programmatically? не работает для меня!

ответ

2

Нет изменений мастер-громкости в Vista + через наследие waveOutXxx API. Используйте WASAPI вместо того, чтобы:

Если устройство имеет регулятор громкости аппаратных средств, изменения, сделанные к контролю через интерфейсIAudioEndpointVolume влияет на уровень громкости как в режиме общего доступа и в эксклюзивном режиме. Если на устройстве отсутствуют аппаратные средства регуляторы громкости и отключения звука, изменения в объеме программного обеспечения и отключения звука Элементы управления через этот интерфейс влияют на уровень громкости в общем режиме , но не в эксклюзивном режиме. В эксклюзивном режиме приложение и аудиоаппаратура обмениваются аудиоданными напрямую, минуя программные элементы управления .

+0

Спасибо, но имеет ли WASAPI функцию, которая нужна только тому и обработчику в качестве входных данных, например, функция WINAPI? –

+0

Это не одна функция. Я связал соответствующую страницу MSDN, чтобы стать для вас лидером. –

+0

ладно спасибо, я буду использовать его! –