[英]How to get full name of microphone in C#?
我想得到所有连接麦克风的全名。 我在谷歌搜索找到答案,但没有答案满足我。
让我举几个例子:
1。
ManagementObjectSearcher mo = new ManagementObjectSearcher("select * from Win32_SoundDevice");
foreach (ManagementObject soundDevice in mo.Get())
{
MessageBox.Show(soundDevice.GetPropertyValue("Caption").ToString());
// or
MessageBox.Show(soundDevice.GetPropertyValue("Description").ToString());
//or
MessageBox.Show(soundDevice.GetPropertyValue("Manufacturer").ToString());
//or
MessageBox.Show(soundDevice.GetPropertyValue("Name").ToString());
//or
MessageBox.Show(soundDevice.GetPropertyValue("ProductName").ToString());
}
所有这些getter都显示:“Device Audio USB”或“Device with High Definition standard”。
2。
WaveInCapabilities[] devices = GetAvailableDevices();
foreach(device in devices)
{
MessageBox.Show(device.ProductName);
}
答案相同:“Device Audio USB”或“与高清标准兼容的设备”。
我想得到全名。 我的意思是,像“Sennheiser麦克风USB”。 它甚至可能吗? 我发现: 获取waveIn设备的全名,但其中的链接被破坏,我没有看到任何用于c#的dsound.lib(使用DirectSoundCaptureEnumerate)。 我错过了什么吗? 或者还有其他选择吗?
@AnkurTripathi答案是正确的,但它返回一个最多包含32个字符的名称。 如果有人不想要这个限制,那么最好的想法是使用一个enumarator:
using NAudio.CoreAudioApi;
MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
var devices = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active);
foreach (var device in devices)
MessageBox.Show(device.friendlyName);
它对我来说很完美。
试试Naudio https://naudio.codeplex.com/
for (int n = 0; n < WaveIn.DeviceCount; n++)
{
this.recordingDevices.Add(WaveIn.GetCapabilities(n).ProductName);
comboBoxAudio.Items.Add(WaveIn.GetCapabilities(n).ProductName);
}
获取全名(FriendlyName):
MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
foreach (MMDevice device in enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active))
{
this.recordingDevices.Add(device.FriendlyName);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.