如何在C#中枚举音频输出设备

2024-02-21

我想知道如何获取计算机上已安装的音频输出设备 (waveOut) 的列表

操作系统:Windows(XP、Vista、7) 框架:.Net 3.5 语言:c#

迭代此列表时,我想获取每个设备的标识符、制造商等信息。

有什么提示吗?


下面是使用 WMI(参考 System.Management)在 C# 中枚举音频设备的代码。

    ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(
           "SELECT * FROM Win32_SoundDevice");

    ManagementObjectCollection objCollection = objSearcher.Get();

    foreach (ManagementObject obj in objCollection)
    {
        foreach (PropertyData property in obj.Properties)
        {
            Console.Out.WriteLine(String.Format("{0}:{1}", property.Name, property.Value));
        }
    }

这会导致输出类似:



Availability:
Caption:USB Audio Device
ConfigManagerErrorCode:0
ConfigManagerUserConfig:False
CreationClassName:Win32_SoundDevice
Description:USB Audio Device
DeviceID:USB\VID_047F&PID;_0CA1&MI;_00\6&2C037688&0&0000
DMABufferSize:
ErrorCleared:
ErrorDescription:
InstallDate:
LastErrorCode:
Manufacturer:(Generic USB Audio)
MPU401Address:
Name:USB Audio Device
PNPDeviceID:USB\VID_047F&PID;_0CA1&MI;_00\6&2C037688&0&0000
PowerManagementCapabilities:
PowerManagementSupported:False
ProductName:USB Audio Device
Status:OK
StatusInfo:3
SystemCreationClassName:Win32_ComputerSystem
SystemName:
Availability:

Caption:Realtek AC'97 Audio for VIA (R) Audio Controller
ConfigManagerErrorCode:0
ConfigManagerUserConfig:False
CreationClassName:Win32_SoundDevice
Description:Realtek AC'97 Audio for VIA (R) Audio Controller
DeviceID:PCI\VEN_1106&DEV;_3059&SUBSYS;_09011558&REV;_60\3&61AAA01&1&8D
DMABufferSize:
ErrorCleared:
ErrorDescription:
InstallDate:
LastErrorCode:
Manufacturer:Realtek
MPU401Address:
Name:Realtek AC'97 Audio for VIA (R) Audio Controller
PNPDeviceID:PCI\VEN_1106&DEV;_3059&SUBSYS;_09011558&REV;_60\3&61AAA01&1&8D
PowerManagementCapabilities:
PowerManagementSupported:False
ProductName:Realtek AC'97 Audio for VIA (R) Audio Controller
Status:OK
StatusInfo:3
SystemCreationClassName:Win32_ComputerSystem
SystemName:
Availability:

  

令人烦恼的是,WMI 似乎无法简单地区分音频的输入和输出设备。但是,使用 DirectSound 的托管接口和 DevicesCollection 类(如下所示(参考 Microsoft.DirectX.DirectSound)),我们可以获得更多面向声音的信息。

        DevicesCollection devColl = new DevicesCollection();
        foreach (DeviceInformation devInfo in devColl)
        {
            Device dev = new Device(devInfo.DriverGuid);   

            //use dev.Caps, devInfo to access a fair bit of info about the sound device
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在C#中枚举音频输出设备 的相关文章

随机推荐

  • 学说关系是否会影响应用程序性能?

    我正在与一个新团队一起开发 Symfony 项目 由于性能问题 他们决定尽可能停止使用 Doctrine 关系 例如 我必须存储我的 关系 的 id 而不是使用 ManyToOne 关系 但我想知道这是否是一个真正的问题 问题是 它改变了检
  • 在 PHP 中导入命名空间与包含文件

    我从 PHP 4 开始构建我的代码库 我使用过require once导入类 现在 在 PHP 5 3 中 我已经定义了名称空间并导入它们 我想更改我的源文件以使用导入 use声明 而不是使用require once 我不确定这是正确的决定
  • 如何使用自定义上传表单将文件上传到 WordPress?

    我不想使用 Wordpress 的内置媒体上传器 我的网站有一个表单 在前端 我需要允许任何人将图像上传到 wp content 中的我的上传文件夹 我找到了很多教程 但它们都告诉我如何使用 WordPress 上传器来做到这一点 我需要能
  • matlab:如何使用数组为绘图着色

    我有一组 3d 坐标 分为 3 个数组X Y Z 和温度T在每个点 我想将这些点绘制为点云 这样每个点都会根据其温度具有颜色 类似于您可以在中指定颜色的方式trisurf 我怎么做 您可以使用SCATTER3 http www mathwo
  • 如何判断 div 是否有高度限制?

    我想知道使用jquery div 是否有高度限制 例如 这个 div 被限制为 100px 无论内容的大小如何 div 的高度都将是 100px div style height 100px bla bla div 并且这个不受限制并且将占
  • Pyinstaller:警告:找不到库

    我正在尝试从使用 PyQt5 的代码创建一个可执行文件 我使用Python 3 5 3 64位 在Windows 10中开发 使用pip安装pyinstaller 3 2 1 并安装pywin32 Pyinstaller 运行但输出未找到库
  • 如何解决 Blazor Server 默认项目解决方案中的命名空间错误(Visual Studio 代码)

    我使用 vs code 创建了多个新的 BlazorServer 项目dotnet new blazorserver在多台电脑上 我总是收到此错误 The type or namespace name Shared does not exi
  • WPF 应用程序将数据表写入 Excel 的更有效方法?

    In my WPF应用程序 我有一个巨大的数据表 System Data DataTable 我需要写入 Excel 文档中的工作表 这是该函数的重点部分 for i lt dt Rows Count i for int colNum 0
  • 为arm64 iOS构建C库(GMP)

    我正在尝试为arm64 构建一个C 库 GMP 6 0 0 以在iOS 上使用 我正在使用下面的调用运行配置脚本 编译器是使用 xcrun find 找到的 configure CC Applications Xcode app Conte
  • Java 11之后wsimport在哪里

    我已经使用 wsimport 和其他 Metro 工具很多年了 但自从 Java 11 中删除了 Java EE 模块后 我找不到这些工具了 我在哪里可以找到wsimport可执行的 WSIMPORT 的可执行文件可以在主站点找到https
  • 如何以编程方式创建新的密钥库?

    我正在尝试以编程方式在 Java 中创建一个新的密钥库 以下代码 KeyStore keyStore KeyStore getInstance KeyStore getDefaultType keyStore setCertificateE
  • 如何在Python中找到两个字符串之间的最长交集?

    我正在尝试编写一个程序来找到两个字符串之间最长的交集 条件是 如果没有公共字符 程序将返回一个空链 如果有多个相同长度的公共字符子串 则应返回最大的一个 例如 对于 bbaacc 和 aabb 重复子串是 aa 和 bb 但 bb gt a
  • Mock 框架与 MS Fakes 框架

    对 NMock 等 Mock 框架与 VS 2011 Fakes 框架的差异有点困惑 通过MSDN 我了解到Fakes允许您像RhinoMock或NMock一样模拟您的依赖项 但是方法不同 Fakes生成代码来实现此功能 但Mocks框架不
  • 选定的文本背景颜色

    当我使用任何网站时 我看到选定的文本背景颜色显示蓝色或根据我们的操作系统主题 我可以更改此选定的文本背景颜色吗 您可以使用这种风格 这适用于除 IE 之外的所有主要浏览器
  • Python 3.3 无法导入 Crypt

    当我在命令行中输入 import Crypt 时 它会显示 gt gt gt import crypt Traceback most recent call last File
  • 如何编写正则表达式“行”包含字符串[重复]

    这个问题在这里已经有答案了 我有字符串 one line second line magic line foo third line 如何仅使用关键字将整行与 foo 匹配foo 所以 我可以匹配foo using foo g 但我不知道如
  • 如何在运行时获取测试环境

    我想检查代码是否正在运行go test 这样我就可以进行一些配置 有什么功能可以做到这一点吗 喜欢 运行时 IsBeingTested 只需指定您在 test 中运行测试init 例如 在 pkg go 中 package pkg var
  • 从 Chrome 94+ 与不支持 HTTPS 的 LAN 设备通过网络应用程序进行通信

    我们开发了一个 Web 应用程序 通过发送 POST 请求与连接到同一 LAN 的打印机进行通信 此类打印机有一个在端口 80 上打开的服务器 该服务器接受包含命令的 XML 无法从通过 HTTPS 加载的页面与网络设备进行通信 因此 我们
  • 调用 SaveChanges() 时排除更新属性

    似乎有两种方法可以使用 附加 方法来更新断开连接的实体框架实体 方法一是简单地将断开连接的实体的状态设置为已修改 myDbContext Dogs Attach dog myDbContext Entry dog State EntityS
  • 如何在C#中枚举音频输出设备

    我想知道如何获取计算机上已安装的音频输出设备 waveOut 的列表 操作系统 Windows XP Vista 7 框架 Net 3 5 语言 c 迭代此列表时 我想获取每个设备的标识符 制造商等信息 有什么提示吗 下面是使用 WMI 参