如何以编程方式获取当前音频级别?

Dav*_* F. 12 c# c++ windows winapi

基本上,我需要的是一种利用当前音频输出并检查声级的方法,即我需要能够检查音频设备上是否有播放的内容.

我不需要检查音量设置,而是检查实际播放音频流的声级.

对不起,我在Visual Studio 2008上询问如何在Windows中执行此操作.

@mikerobi:这构成了我推理的一部分 - 如果它显示在系统音量计上,必须有一个系统调用可以将其恢复

Kei*_*thS 2

这是一个很好的问题。对于 32 位 Windows 应用程序,答案是挂钩 winmm.dll 和其他低级音频控制 DLL。在 C# 中,我将创建一个包含 extern 方法原型的包装类:

public class MyAudioWrapper
{
   [DllImport("winmm.dll", EntryPoint = "waveOutGetVolume")]
   public extern void GetWaveVolume(IntPtr devicehandle, out int Volume);

   ...
}
Run Code Online (Sandbox Code Playgroud)

查看此链接以获取 Windows 音频方法列表;您可以使用混音器或仅使用波形输出控制器来设置音量。您想要使用的内容将决定要导入的库。您必须研究如何最好地定义原型,以及如何获取音频/混音器设备的句柄。