我正在开发一个WPF应用程序,其中需要记录来自用户的音频消息。我在here上遵循了代码并且工作正常。现在的问题是,如果它是一个桌面我只检查是否有内置麦克风,但如果有任何连接的外部麦克风没有。我还想知道用户是否已禁用麦克风。你能告诉我如何检查是否连接了任何外接麦克风。如果用户无法录制音频,我需要显示错误消息。
答案 0 :(得分:1)
为了检测C#中硬件的变化,您可以使用WM_DEVICECHANGE
message,通知应用程序更改设备或计算机的硬件配置。
由于我不是这方面的专家,我宁愿指出您在StackOverflow上的Detecting when a microphone is unplugged问题,而不是试图向您解释。该帖子中接受的答案可以帮助您检测麦克风拔出时的时间。从接受的答案到相关问题:
using System.Runtime.InteropServices;
const int WM_DEVICECHANGE = 0x0219;
// new device is pluggedin
const int DBT_DEVICEARRIVAL = 0x8000;
//device is removed
const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
//device is changed
const int DBT_DEVNODES_CHANGED = 0x0007;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_DEVICECHANGE
{
//Your code here.
}
base.WndProc(ref m);
}
以下是一些可以帮助您完成项目的其他链接:
来自CodeProject的Sound Activated Recorder with Spectrogram in C#
来自第9频道的.NET Voice Recorder
来自CodePlex的.NET Voice Recorder