基本上,我需要一种方法来接入当前音频输出并检查声音水平,即我需要能够检查音频设备上是否正在播放音频。
我不需要检查音量设置,而是实际播放的音频流的声音水平。
抱歉,我在询问如何在Visual Studio 2008上的Windows系统中完成此操作。
@mikerobi:这是我的推理的一部分 - 如果正在显示在系统音量计上,那么必须有一个系统调用可以将其取回。
这是一个好问题。对于32位Windows应用程序,答案是要钩入winmm.dll和其他低级音频控制DLL。在C#中,我会创建一个包含外部方法原型的包装类:
public class MyAudioWrapper
{
[DllImport("winmm.dll", EntryPoint = "waveOutGetVolume")]
public extern void GetWaveVolume(IntPtr devicehandle, out int Volume);
...
}
http://www.pinvoke.net/default.aspx/winmm.waveOutGetVolume
http://msdn.microsoft.com/en-us/library/dd316556(v=VS.85).aspx
我不想打击你的积极性,但相信我,如果你不熟悉非托管代码,这将不容易实现。即使你成功了,也无法预测设备的行为结果。祝你好运。
windows-api
,看看我们能吸引谁。 :) - Dan J