studio - Silenciar el volumen de Windows usando C#
system media (6)
Declare esto para P / Invocar:
private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int WM_APPCOMMAND = 0x319;
[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
Y luego use esta línea para silenciar / activar el sonido.
SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr) APPCOMMAND_VOLUME_MUTE);
¿Alguien sabe cómo silenciar programáticamente el volumen de Windows XP usando C #?
Me encontré con este proyecto que podría ser de interés, si está ejecutando Vista.
Probablemente desee utilizar los comandos de MCI: http://msdn.microsoft.com/en-us/library/ms709461(VS.85).aspx
Debo agregar que aunque esto le dará un buen control general sobre los mezcladores de entrada y salida en Windows, puede tener algunas dificultades para realizar controles detallados, como configurar el aumento de micrófono, etc.
Ah, y si estás en Vista, olvídalo. Es un modelo totalmente diferente.
Puede usar P / Invocar como se explica aquí: http://www.microsoft.com/indonesia/msdn/pinvoke.aspx . De hecho, sigue los pasos de la Tarea 1: Silenciar y Activar sonido cerca de la parte superior.
Lo que puede usar para Windows Vista / 7 y probablemente también para 8:
Puede usar NAudio (http://naudio.codeplex.com/releases/view/79035). Descargue la última versión. Extraiga las DLL y haga referencia a la DLL NAudio en su proyecto C #.
A continuación, agregue el siguiente código para recorrer todos los dispositivos de audio disponibles y silenciarlo si es posible.
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
{
//Show us the human understandable name of the device
System.Diagnostics.Debug.Print(dev.FriendlyName);
//Mute it
dev.AudioEndpointVolume.Mute = true;
}
catch (Exception ex)
{
//Do something with exception when an audio endpoint could not be muted
}
}
}
catch (Exception ex)
{
//When something happend that prevent us to iterate through the devices
}
Consulte Cómo silenciar programáticamente el volumen de Windows XP con C #?
void SetPlayerMute(int playerMixerNo, bool value)
{
Mixer mx = new Mixer();
mx.MixerNo = playerMixerNo;
DestinationLine dl = mx.GetDestination(Mixer.Playback);
if (dl != null)
foreach (MixerControl ctrl in dl.Controls)
if (ctrl is MixerMuteControl)
{
((MixerMuteControl)ctrl).Value = (value) ? 1 : 0;
break;
}
}