读取 windows 混音器中的音量值

Reading the value of the volume in the windows mixer

我正在创建一个程序供我和我的朋友使用。 我想制作一个程序来控制 Windows 混音器。我正在使用 C#

我已经知道如何控制音量。但我想要一些关于控制混音器内每个应用程序的单独音量级别的提示。

主要问题是(有点意思):如何读取每个应用程序的单独仪表内的音量值?换句话说,我想 read/get 应用程序的音量 bar/meter 内的绿色和灰色条的值。我附上了一张图片,说明了我的意思 The Windows Audio Mixer

音频混合器 (Sndvol) 中的每个项目都是一个音频会话。 Here's 来自 MSDN 的关于会话如何在后台工作的精彩读物。

除此之外,您需要订阅音频会话事件才能收到以下事件的通知:

  • The master volume level or muting state of the session submix has changed.
  • The volume level of one or more channels of the session submix has changed.
  • The session has been disconnected.
  • The activity state of the session has changed to active, inactive, or expired.
  • The session has been assigned a new grouping parameter.
  • A user-interface property of the session (icon or display name) has changed.

直接复制自here

核心音频 API 是 Windows SDK 的一部分,因此您需要使用 P/Invoke 来实际调用该代码。我认为核心音频 API 有一些 .NET 包装器,通过简单的搜索应该很容易找到它们。

编辑:这是您尝试做的事情的良好开端。它包括用于管理会话声音的代码。我没有仔细看,所以我不确定它是否实现了会话事件。