SndVol 如何能够改变给定音频会话的音量?
我正在编写自己的 API 来执行 SndVol 系统实用程序的一些功能.我希望这个 API 的一部分能够设置给定 ,但我遇到了一个问题,虽然我能够使用 IAudioSessionEnumerator
,IAudioSessionEnumerator
只允许我访问 IAudioSessionControl
对象,但我需要IAudioClient
对象来获取 ISimpleAudioVolume
对象,我可以使用它来设置音频会话音量.是否可以获得与 IAudioSessionControl
对象关联的 IAudioClient
对象?
如果在 IAudioSessionControl 接口上调用 QueryInterface,通常可以访问 ISimpleAudioVolume.
I am writing my own API to perform some of the functionality of the SndVol system utility. I would like part of this API to be the ability to set the volume level of a given audio session.
SndVol displays a slider on the "Device" panel that the user can use to change the master volume level of the audio device as well as a slider for each audio session (on the "Applications" panel) that changes the volume level of the session:
If I drag the slider handle for one of the audio sessions, then SndVol is able to change the audio session's volume level. How does it do that?
I thought that it was possible using Windows Vista's Core Audio API, but I encountered the problem that although I am able to iterate audio sessions of a device using an IAudioSessionEnumerator
, the IAudioSessionEnumerator
only gives me access to IAudioSessionControl
objects, but I need the IAudioClient
object to obtain an ISimpleAudioVolume
object that I can use to set the audio session volume level. Is it possible to get the IAudioClient
object associated with an IAudioSessionControl
object?
If you call QueryInterface on the IAudioSessionControl interface, you can often get access to an ISimpleAudioVolume.
相关文章