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

Posted

技术标签:

【中文标题】列出连接到 Windows PC 的所有 USB 音频耳机【英文标题】:List all USB audio headsets connected to a Windows PC 【发布时间】:2014-06-03 20:02:40 【问题描述】:

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

****问题:有什么办法可以得到设备的全名?****

【问题讨论】:

您确定解决方案 1 只为您提供一台设备。我在我的机器上对其进行了测试,它返回了 2 个设备。第一个是“(通用 USB 音频)”,第二个看起来像我拥有的​​“真实的” 它提供了多个设备。对于耳机,它看起来像这样“(通用 USB 音频)” @JohnSaunders:不过,你做得很糟糕。请使用标签将标签列表转换为真实的短语。 meta.***.com/q/251859/103167 @BenVoigt:对不起,在这种情况下不同意。绝大多数答案都与 C# 无关,并且该标签充分告知那些回答他们应该用 C# 回答的人。 @John:标题中没有 C#。在我思考哪些词能真正准确地描述问题时,我很简短。 【参考方案1】:

如果您知道它是一个 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 和 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
    

【讨论】:

(ManagementObject drive in new ManagementObjectSearcher("select Name from Win32_USBHub").Get()) string s = drive["Name"].ToString();这给了我“通用 USB 集线器”而不是实际名称 我使用的是 Windows 7。解决方案 2 和 3 给了我实际名称,但字符串被截断为 31 个字符。 我无法解决 Win32_USBDevice 问题。我尝试了链接中提供的解决方案,但没有成功。 我也试过了,但没用。我安装了 WMI 代码创建器并尝试了几个类,但没有任何效果。 你有没有在其他机器上试过,因为那不应该发生。

以上是关于列出连接到 Windows PC 的所有 USB 音频耳机的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Windows Mobile PDA 连接到 Windows 10

使用 USB 串行电缆时自动将外围设备连接到 PC 的 Pyserial 代码

如何从 BeagleBone Black 连接到 USB TTY?

如何将设备连接到 Eclipse?

USB开发工具:USBDeview

UWP蓝牙查找设备耗时较长