Change Sound Volume from .net code
Question
Is there an easy way to set the volume from managed .net code?
Solution
This rather long article shows how: Controlling sound volume in C#
OTHER TIPS
This does it for my Windows 7:
Download NAudio (http://naudio.codeplex.com/releases/view/79035) and reference the DLL in your project. Than add the following code:
try
{
//Instantiate an Enumerator to find audio devices
NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
//Get all the devices, no matter what condition or status
NAudio.CoreAudioApi.MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All, NAudio.CoreAudioApi.DeviceState.All);
//Loop through all devices
foreach (NAudio.CoreAudioApi.MMDevice dev in DevCol)
{
try
{
//Set at maximum volume
dev.AudioEndpointVolume.MasterVolumeLevel = 0;
//Get its audio volume
System.Diagnostics.Debug.Print("Volume of " + dev.FriendlyName + " is " + dev.AudioEndpointVolume.MasterVolumeLevel.ToString());
//Mute it
dev.AudioEndpointVolume.Mute = true;
System.Diagnostics.Debug.Print(dev.FriendlyName + " is muted");
}
catch (Exception ex)
{
//Do something with exception when an audio endpoint could not be muted
System.Diagnostics.Debug.Print(dev.FriendlyName + " could not be muted");
}
}
}
catch (Exception ex)
{
//When something happend that prevent us to iterate through the devices
System.Diagnostics.Debug.Print("Could not enumerate devices due to an excepion: " + ex.Message);
}
This CodeProject article demonstrates how you fully control the Windows Mixer settings, including the master volume for the system. It seems to wrap most of the horrible Win API stuff, so it's probably the easiest way to go.
Simple answer: You have to use interop.
I wrote a library to do all kinds of sound stuff for you, tho:
WinnMM.Net: http://winmm.codeplex.com/
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow