gpt4 book ai didi

c# - 获取音频设备列表并使用 C# 选择一个

转载 作者:可可西里 更新时间:2023-11-01 09:21:41 27 4
gpt4 key购买 nike

您好,我正在使用 C# 在 Windows 中创建一个基于桌面的应用程序。

我必须在 2 个不同的组合框中显示所有可用音频和视频设备的列表。从组合框中选择任何设备都会将该特定设备设置为默认设备

我正在使用 WMI。

获取可用音频设备列表的代码:

ManagementObjectSearcher mo = 
new ManagementObjectSearcher("select * from Win32_SoundDevice");

foreach (ManagementObject soundDevice in mo.Get())
{
String deviceId = soundDevice.GetPropertyValue("DeviceId").ToString();
String name = soundDevice.GetPropertyValue("Name").ToString();

//saving the name and device id in array
}

如果我尝试这样设置设备:

 using (RegistryKey audioDeviceKey = 
Registry.LocalMachine.OpenSubKey(audioDevicesReg
+ @"\" + audioDeviceList.SelectedText.ToString(), true)){}

我得到异常:

System.Security.SecurityException occurred in mscorlib.dll

现在我有几个问题:

1) How to set the selected device as the default audio device?
2) The array contains device name as : "High Definition audio device"
even when I have attached a headset.
3) I want the list as speaker,headset etc...How to get that?

谁能指出我正确的方向?

最佳答案

  1. 没有记录更改默认音频设备的机制。
  2. 那是因为您枚举的是物理音频设备,而不是音频端点。
  3. 您想使用 IMMDeviceEnumerator API 枚举音频端点(扬声器等)。

遗憾的是,Microsoft 没有为 IMMDeviceEnumerator API 发布托管互操作,您需要定义自己的(互联网上有多种定义)。

关于c# - 获取音频设备列表并使用 C# 选择一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5405660/

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