10

我正在编写自己的 API 来执行 SndVol 系统实用程序的一些功能。我希望这个 API 的一部分能够设置给定音频会话的音量级别。

SndVol 在“设备”面板上显示一个滑块,用户可以使用它来更改音频设备的主音量级别,以及一个用于更改会话音量级别的每个音频会话(在“应用程序”面板上)的滑块:

SndVol 音量混合器的屏幕截图

如果我拖动其中一个音频会话的滑块手柄,则 SndVol 能够更改音频会话的音量。它是如何做到的?

我认为使用 Windows Vista 的Core Audio API是可能的,但我遇到了一个问题,虽然我能够使用 迭代设备的音频会话IAudioSessionEnumerator,但IAudioSessionEnumerator只能让我访问IAudioSessionControl对象,但我需要IAudioClient对象来获取ISimpleAudioVolume对象我可以用来设置音频会话音量。是否可以获取与IAudioClient对象关联的IAudioSessionControl对象?

4

2 回答 2

11

如果在 IAudioSessionControl 接口上调用 QueryInterface,通常可以访问 ISimpleAudioVolume。

于 2011-05-21T19:43:35.623 回答
2

Larry Osterman为微软工作并致力于新的音频 API 的工作,他写了一系列关于新 Vista/Win7 音频功能的博客文章。以下是一些可能有帮助的链接:

快速浏览新的 Windows 7 多媒体/音频 SDK 示例- 示例显示每个应用的音量控制

Vista 中的音量控制- 描述每个应用程序的音量控制和其他在 Vista/Win7 中添加的新音频功能

页面右侧有一个索引;您可以查看音频标记的项目以获取其他可能有帮助的文章。

于 2011-05-21T02:37:38.050 回答