gpt4 book ai didi

c# - 检测连接到系统的音频输入和输出设备

转载 作者:太空宇宙 更新时间:2023-11-03 19:29:36 29 4
gpt4 key购买 nike

我想在 C#.net 中找出有多少音频输入和输出设备连接到我的系统

请提出任何建议。

谢谢。

最佳答案

您需要访问必要的 Windows API 函数。

此类应该让您入门 - Win32.GetSoundDevices 返回设备名称列表。在 Windows SDK 中查找 WAVEOUTCAPS,了解您可以获得的其他信息的详细信息。

public class Win32 {
[DllImport("winmm.dll", SetLastError=true)]
static extern uint waveOutGetNumDevs();

[DllImport("winmm.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern uint waveOutGetDevCaps(uint hwo,ref WAVEOUTCAPS pwoc,uint cbwoc);

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct WAVEOUTCAPS {
public ushort wMid;
public ushort wPid;
public uint vDriverVersion;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string szPname;
public uint dwFormats;
public ushort wChannels;
public ushort wReserved1;
public uint dwSupport;
}

public static string [] GetSoundDevices() {
uint devices = waveOutGetNumDevs();
string [] result = new string[devices];
WAVEOUTCAPS caps = new WAVEOUTCAPS();

for(uint i = 0; i < devices; i++) {
waveOutGetDevCaps(i, ref caps, (uint)Marshal.SizeOf(caps));
result[i] = caps.szPname;
}
return result;
}


}

关于c# - 检测连接到系统的音频输入和输出设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5936434/

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