列出连接到Windows PC的所有USB音频耳机

时间:2014-06-03 20:02:40

标签: c# windows

我想使用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"

enter image description here

****问题:有什么方法可以获得设备的完整名称吗?****

1 个答案:

答案 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
    }
}