IT분야/C#
[C#] Sound Volume Control
suroMind
2012. 1. 6. 15:51
Visual Studio 2010에서 테스트하였습니다.
TrackBar의 Minimum값은 0 , Maximum값은 10으로 셋팅하여 테스트 하였습니다.
출처 : http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html
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