2014-01-12 4 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. 

가 어떻게 마스터 볼륨에 대한 핸들러를 만들 않는 기능 마스터 볼륨을 변경하려면

?

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

괜찮습니다. 사용하겠습니다. –