【发布时间】:2011-05-29 08:33:23
【问题描述】:
从 Windows Vista 开始,waveOutSetVolume 函数 (winmm.dll) 不再在操作系统主卷上运行,而是针对每个应用程序单独运行。默认情况下,它设置为 100%,这意味着应用以与操作系统相同的音量播放声音。
现在我想利用这个效果:只改变我当前应用的音量而不改变操作系统音量。
我试用了http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html 提供的应用程序。我添加了一个 WindowsMediaPlayer 控件并使用 URL 属性(自动启动设置为 true)将 Webradio 流加载到其中。乍一看,代码并没有达到应有的效果:当我滚动滑块时,收音机继续以相同的音量播放,即使我设置为 0 也等于将其静音。我调试了一下,发现一切正常,waveOutSetVolume 返回 0。应该没问题,还是我弄错了?
我打开了 Windows 7 提供的混音器控制台。在那里我看到了以下内容:当我滚动示例中的滑块时,混音器视图中相应应用程序的滑块会发生变化(应该如此)。但是音量没有变化。但是,如果我在混音器控制台中降低应用程序的音量(使用鼠标手动),网络收音机会以较低的声音播放(应该如此)。似乎在我的代码中缺少一些“提交”调用来实际使操作系统相应地调整应用程序的音量。
有什么想法吗?谢谢,大卫
【问题讨论】: