gpt4 book ai didi

c# - 如何在 C# 中获取麦克风的全名?

转载 作者:太空狗 更新时间:2023-10-29 17:51:42 25 4
gpt4 key购买 nike

我想获得所有已连接麦克风的全名。我在谷歌上搜索寻找答案,但没有令我满意的答案。

举几个例子:

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 compatible with High Definition standard”。

2.

WaveInCapabilities[] devices = GetAvailableDevices();        
foreach(device in devices)
{
MessageBox.Show(device.ProductName);
}

相同的答案:“设备音频 USB”或“与高清标准兼容的设备”。

我想得到全名。我的意思是,类似于:“Sennheiser 麦克风 USB”。有可能吗?我发现:Get the full name of a waveIn device但是其中的链接已损坏,我没有看到任何用于 c# 的 dsound.lib(使用 DirectSoundCaptureEnumerate)。我错过了什么吗?或者还有其他选择吗?

最佳答案

@AnkurTripathi 的回答是正确的,但它返回的名称最多包含 32 个字符。如果有人不想要此限制,那么最好的办法是使用枚举器:

using NAudio.CoreAudioApi;

MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
var devices = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active);
foreach (var device in devices)
MessageBox.Show(device.friendlyName);

它非常适合我。

关于c# - 如何在 C# 中获取麦克风的全名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36542204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com