C# C中的插孔感应#

C# C中的插孔感应#,c#,.net,audio,io,microphone,C#,.net,Audio,Io,Microphone,我正在编写一个应用程序,将录制来自麦克风的音频。我的问题是,我需要知道用户何时插入插孔并拔出插孔 我查看了Win32\u SoundDeviceWMI类,在我看来,似乎没有这样一个属性可以检查插孔的状态 然后,我在IMMDeviceEnumerator中找到了RegisterEndpointNotificationCallback,它似乎可以满足我的需要,但我不知道如何在C#中实现这一点。有人知道如何使用MMDeviceEnumerator方法检查音频端口状态吗?非常感谢您的帮助。您可能想看看当

我正在编写一个应用程序,将录制来自麦克风的音频。我的问题是,我需要知道用户何时插入插孔并拔出插孔

我查看了
Win32\u SoundDevice
WMI类,在我看来,似乎没有这样一个属性可以检查插孔的状态


然后,我在
IMMDeviceEnumerator
中找到了
RegisterEndpointNotificationCallback
,它似乎可以满足我的需要,但我不知道如何在C#中实现这一点。有人知道如何使用
MMDeviceEnumerator
方法检查音频端口状态吗?非常感谢您的帮助。

您可能想看看当时的开源项目

我浏览了他们的代码,他们似乎为您的应用程序提供了一个.Net包装器


由于此项目是在Microsoft公共许可下进行的,因此它可能在您的项目中可用。

请使用以下代码签出:

var enumerator = new MMDeviceEnumerator();
var d = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
Console.WriteLine(d.Properties[new Guid("46d16a2c-5654-41c0-911e-7860d2bce7ee")].Value.ToString());
此属性返回的值为1(已插入)或0(已拔出)

必须引用NAudio库。

Guid中出现“对象引用未设置为对象实例”错误,Guid是什么?