Отключение звука Windows с помощью С#

Кто-нибудь знает, как программно отключить Windows XP Volume с помощью С#?

Ответы

Ответ 1

Объявить это для P/Invoke:

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);

И затем используйте эту строку для отключения/включения звука.

SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr) APPCOMMAND_VOLUME_MUTE);

Ответ 2

Что вы можете использовать для Windows Vista/7 и, возможно, 8 тоже:

Вы можете использовать NAudio (http://naudio.codeplex.com/releases/view/79035). Загрузите последнюю версию. Извлеките библиотеки DLL и свяжите DLL NAudio в проекте С#.

Затем добавьте следующий код для повторения всех доступных аудиоустройств и приглушите его, если это возможно.

    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
    }

Ответ 3

Я столкнулся с этот проект, который может представлять интерес, если вы используете Vista.

Ответ 5

Возможно, вы захотите использовать команды MCI: http://msdn.microsoft.com/en-us/library/ms709461(VS.85).aspx

Я должен добавить, что, хотя это даст вам хороший общий контроль над входными и выходными микшерами в окнах, вы можете столкнуться с трудностями при выполнении подробных элементов управления, таких как настройка микрофона и т.д.

О, и если вы на Vista, тогда просто забудьте об этом. Это совершенно другая модель.

Ответ 6

Вы можете использовать P/Invoke, как описано здесь: http://www.microsoft.com/indonesia/msdn/pinvoke.aspx. На самом деле он выполняет шаги в Задаче 1: Отключить звук и включить звук вверху.