如何识别.Net应用程序中的默认audio设备?

我有点困惑。 有没有简单的方法来设置正确的audio设备(input/输出)在我的VoIP .NET应用程序不使用DirectX?

“正确的audio设备”可能意味着 – 已经在Windows中设置为DEFAULT的设备。

如Skype(或X-Lite)在大多数情况下正确selectaudio设备。 但是如何? 只是得到的设备列表不解决问题,因为我不知道如何select适当的。

我想XP和Vista(7)的解决scheme可能会有所不同。

先谢谢你!

Solutions Collecting From Web of "如何识别.Net应用程序中的默认audio设备?"

在Vista和Win7上,您可以使用MMDevice API IMMDeviceEnumerator :: GetDefaultAudioEndpoint,然后使用MMDevice :: GetId获取描述此设备的字符串。

在其他系统(包括Vista和Win7)上,您可以使用较旧的MME API waveInGetDevCaps和waveOutGetDevCaps,使用deviceID = WAVE_MAPPER(-1)来获取描述默认设备的字符串。

我最近不得不做类似的事情,但支持多个Windows版本。 由于其简单性,我最终使用了NAudio 。 有几个示例应用程序捆绑在一起,所以你可以看到如何使用它。