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

我想知道在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; } }