2010-12-22 1 views
2

이 켜짐, waveOutSetVolume 함수 (winmm.dll)는 각 응용 프로그램마다 개별적으로 OS 마스터 볼륨에서 작동하지 않습니다. 기본값으로 100 %로 설정됩니다. 즉, 앱이 OS와 같은 볼륨으로 사운드를 재생합니다.현재 응용 프로그램의 볼륨을 Windows Vista에서만 변경하면

이제는이 효과를 정확하게 사용하고 싶습니다. OS 볼륨을 변경하지 않고 현재 앱의 볼륨 만 변경하고 싶습니다.

http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html에서 제공하는 앱을 사용해 보았습니다. WindowsMediaPlayer 컨트롤을 추가하고 URL 속성 (true로 설정된 자동 시작)을 사용하여 Webradio 스트림을로드했습니다. 언뜻보기에는 코드가 필요한 것이 아닙니다. 슬라이더를 스크롤하면 라디오가 동일한 볼륨에서 계속 연주됩니다. 0으로 설정하더라도 음소거와 같을 것입니다. 디버깅을하고 모든 것이 OK 인 것을 알았습니다. waveOutSetVolume은 0을 반환합니다. 괜찮을 것입니까, 아니면 제가 잘못 생각합니까?

Windows 7에서 제공하는 믹서 콘솔을 열었습니다. 다음과 같이 보았습니다. 샘플에서 슬라이더를 스크롤 할 때 믹서보기에서 해당 응용 프로그램의 슬라이더가 변경됩니다. 그러나 볼륨은 변하지 않습니다. 그러나 믹서 콘솔에서 (내 마우스로 수동으로) 앱의 볼륨을 줄이면 웹 라디오가 더 낮은 음성으로 재생됩니다. 내 코드에서 OS가 실제로 응용 프로그램의 볼륨을 조정하도록 "제출"호출이 누락 된 것 같습니다.

아이디어가 있으십니까? 감사합니다, David

답변

1

오디오 세션 API 인 IAudioVolume 및 IAudioSessionNotification을 사용하면 현재 앱 볼륨을 수정하고 앱의 볼륨 슬라이더로 볼륨을 추적 할 수 있습니다.

관련 문제