■ 사운드 볼륨 설정하고 구하는 방법을 보여준다.
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
using System; using System.Runtime.InteropServices; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Import ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region WAVE OUT 볼륨 구하기 - waveOutGetVolume(waveOutHandle, volume) /// <summary> /// WAVE OUT 볼륨 구하기 /// </summary> /// <param name="waveOutHandle">WAVE OUT 핸들</param> /// <param name="volume">볼륨</param> /// <returns>처리 결과</returns> [DllImport("winmm")] private static extern int waveOutGetVolume(IntPtr waveOutHandle, out uint volume); #endregion #region WAVE OUT 볼률 설정하기 - waveOutSetVolume(waveOutHandle, volume) /// <summary> /// WAVE OUT 볼률 설정하기 /// </summary> /// <param name="waveOutHandle">WAVE OUT 핸들</param> /// <param name="volume">볼륨</param> /// <returns>처리 결과</returns> [DllImport("winmm")] private static extern int waveOutSetVolume(IntPtr waveOutHandle, uint volume); #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { SetSoundVolume(50); int volume = GetSoundVolume(); Console.WriteLine("설정 볼륨 : {0}", volume); } #endregion #region 사운드 볼륨 설정하기 - SetSoundVolume(volume) /// <summary> /// 사운드 볼륨 설정하기 /// </summary> /// <param name="volume">볼륨</param> /// <remarks>volume는 0 ~ 100 사이의 값을 설정한다.</remarks> private static void SetSoundVolume(ushort volume) { try { int value = (int)((double)volume * ushort.MaxValue / 100); uint leftChannelValue = ((uint)value & 0x0000ffff); uint rightChannelValue = ((uint)value << 16); waveOutSetVolume(IntPtr.Zero, leftChannelValue | rightChannelValue); } catch { } } #endregion #region 사운드 볼륨 구하기 - GetSoundVolume() /// <summary> /// 사운드 볼륨 구하기 /// </summary> /// <returns>볼륨</returns> private static int GetSoundVolume() { uint value; waveOutGetVolume(IntPtr.Zero, out value); ushort leftChannelValue = (ushort)(value & 0x0000ffff); ushort rightChannelValue = (ushort)(value >> 16); int volume = (int)(leftChannelValue * 100.0 / ushort.MaxValue + 0.5); return volume; } #endregion } } |