我正试图以编程方式获取计算机的录音设备列表,然后更改默认设置。我已经在下面的代码中成功地通过播放设备实现了这一点,但是我希望也能够做到这一点并且更改录音设备。下面是代码返回的设备列表:
以下是我想要查看和更改的设备:
![这是下面的代码返回的设备列表](https://istack.dev59.com/odPki.webp)
以下是我想要查看和更改的设备:
![这些是我想要查看和更改的设备](https://istack.dev59.com/zA6Qy.webp)
class Program
{
static void Main(string[] args)
{
MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();
MMDeviceCollection devices = DevEnum.EnumerateAudioEndPoints(EDataFlow.eRender, EDeviceState.DEVICE_STATE_ACTIVE);
MMDevice DefaultDevice = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
MMDevice SecondaryDevice = null;
PolicyConfigClient client = new PolicyConfigClient();
Console.WriteLine("-----------------------------------");
Console.WriteLine("List of devices");
Console.WriteLine("-----------------------------------");
for (int i = 1; i < devices.Count; i++)
{
if (devices[i].ID != DefaultDevice.ID)
{
SecondaryDevice = devices[i];
}
Console.WriteLine(devices[i].FriendlyName);
Console.ReadLine();
}
Console.WriteLine("Default Device");
Console.WriteLine("-----------------------------------");
Console.WriteLine(DefaultDevice.FriendlyName);
Console.ReadLine();
Console.WriteLine("Secondary Device");
Console.WriteLine("-----------------------------------");
Console.WriteLine(SecondaryDevice.FriendlyName);
Console.ReadLine();
client.SetDefaultEndpoint(SecondaryDevice.ID, ERole.eCommunications);
client.SetDefaultEndpoint(SecondaryDevice.ID, ERole.eMultimedia);
client.SetDefaultEndpoint(SecondaryDevice.ID, ERole.eConsole);
DefaultDevice = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
Console.WriteLine("New Default Device");
Console.WriteLine("-----------------------------------");
Console.WriteLine(DefaultDevice.FriendlyName);
Console.ReadLine();
}
}
EDataFlow.eCapture
而不是EDataFlow.eRender
。 - Chetan