【问题标题】:Changing volume for current app exclusively仅更改当前应用的音量
【发布时间】: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 提供的混音器控制台。在那里我看到了以下内容:当我滚动示例中的滑块时,混音器视图中相应应用程序的滑块会发生变化(应该如此)。但是音量没有变化。但是,如果我在混音器控制台中降低应用程序的音量(使用鼠标手动),网络收音机会以较低的声音播放(应该如此)。似乎在我的代码中缺少一些“提交”调用来实际使操作系统相应地调整应用程序的音量。

有什么想法吗?谢谢,大卫

【问题讨论】:

    标签: c# windows-7 volume


    【解决方案1】:

    您可以使用音频会话 API IAudioVolume 和 IAudioSessionNotification 来修改当前应用的音量,并使用应用中的音量滑块跟踪您的音量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 2014-07-10
      • 2018-07-11
      • 1970-01-01
      相关资源
      最近更新 更多