본문 바로가기
Programming 개발은 구글로/C#[WPF]

C#[WPF] Get Window 스피커 정보

by 40대직장인 2022. 4. 23.

Window 소리 설정에 있는 정보를 가져올 수 있습니다.

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;
    }
}

result[0] 은 현재 재생 중인 스피커의 정보를 가지고 있습니다.

디바이스 변경될 때마다 변경된 값으로 리턴이 됩니다.

 

 

 

댓글