我想使用C#检索连接到PC的USB耳机设备。我尝试了以下解决方案,但没有成功:
解决方案1: How to enumerate audio out devices in c#
我试过了,但设备名称显示为"(通用USB音频)"而不是实际名称。
解决方案2: How to get the default audio device?
解决方案3: Detecting Audio Input & output devices connected to system
解决方案2和解决方案3给出了以下结果: 设备名称被截断为31个字符。 例如:"麦克风(Sennheiser VOICE 689"
****问题:有什么方法可以获得设备的完整名称吗?****
答案 0 :(得分:0)
如果你知道它是一个USB音频设备,并假设为设备正确编写了驱动程序,你可以这样做:
foreach (ManagementObject drive in
new ManagementObjectSearcher(
"select Name from Win32_USBDevice where Service='usbaudio'").Get())
{
{
string s = drive["Name"].ToString();
// Continue
}
}
<强>加成强> 你只获得了31个字符(技术上是32个),因为原生.DLL的PInvoke使用了一个char [32],所以它不能返回更多;你不会从解决方案1&amp;获得所需的东西2.
此外,我不知道为什么你不能使用Win32_USBDevice,因为我也使用Win7 x64而且我没有任何问题。 This链接可能会对您有所帮助。
可能的替代
您可以使用Win32_PnPEntity
类:
foreach (ManagementObject drive in
new ManagementObjectSearcher(
"select Name from Win32_PnPEntity where Service='usbaudio'").Get())
{
{
string s = drive["Name"].ToString();
// Continue. Can look at Description, Caption, etc. too
}
}