Visual Studio 2010에서 테스트하였습니다.


using System;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication2 {
    public class Win32 {
        #region 사운드 관련
        [DllImport("winmm.dll")]
        public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);

        [DllImport("winmm.dll")]
        public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);

        public static void SetSoundVolume(int volume) {
            try {
                int newVolume = ((ushort.MaxValue / 10) * volume);
                uint newVolumeAllChannels = (((uint)newVolume & 0x0000ffff) | ((uint)newVolume << 16));
                waveOutSetVolume(IntPtr.Zero, newVolumeAllChannels);
            } catch (Exception) { }
        }

        public static int GetSoundVolume() {
            int value = 0;
            try {
                uint CurrVol = 0;
                waveOutGetVolume(IntPtr.Zero, out CurrVol);
                ushort CalcVol = (ushort)(CurrVol & 0x0000ffff);
                value = CalcVol / (ushort.MaxValue / 10);
            } catch (Exception) { }
            return value;
        }
        #endregion
    }
}

TrackBar 의 Value에 바로 SetSoundVolume() 또는 GetSoundVolume()으로 표현하면 됩니다.
TrackBar의 Minimum값은 0 , Maximum값은 10으로 셋팅하여 테스트 하였습니다.

출처 : http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html

 
  • 기요운유리밍 2014.07.15 16:54

    trackbar가 뭔가요?
    저 코드만 그대로 visualstudio창에 쓰면 되는건가요?

    • suroMind 2014.07.16 10:02 신고

      오래되서 잘 기억이 안납니다만..ㅎㅎ
      볼륨조절할 때C# 트랙바를 쓰지 않습니까? 그래서 사용자가 조절하는 트랙바의 값을(0~10)을 위 클래스를 이용하여 처리를 한다는 얘기입니당^^