Как мне узнать, отключен ли основной звук? - PullRequest
3 голосов
/ 30 декабря 2010

Я использую следующее для отключения / включения основного звука на моем компьютере. Сейчас я ищу способ определить состояние отключения звука. Есть ли такой простой способ сделать это в C #?

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

Ответы [ 3 ]

8 голосов
/ 18 июня 2013

Привет, только что наткнулся на эту старую тему, но бреюсь точно так же.

Я решил, используя следующее:

using System.Runtime.InteropServices;

...

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);


private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int APPCOMMAND_VOLUME_UP = 0xA0000;
private const int APPCOMMAND_VOLUME_DOWN = 0x90000;               
private const int WM_APPCOMMAND = 0x319;        

...

// mute (toggle)
SendMessage(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_MUTE);


// unmute
SendMessage(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_UP);
SendMessage(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_DOWN);

Приглушение звука не всегда отключает звук, это переключение, но если вы сначала вызовете «включить звук», вы должны быть золотыми.

С наилучшими пожеланиями Kurt

0 голосов
/ 31 декабря 2010

Кредит RRUZ в комментариях выше.См. Stackoverflow.com/questions/294292.Единственная проблема в том, что вам нужен режим совместимости.

0 голосов
/ 30 декабря 2010

Оформить заказ учебник . Я никогда не играл со Mixer в C # (или на любом другом языке), поэтому я предполагаю, что они верны в P / Invoking API Win32 и что они не изобретают колесо. Вы можете скачать пример, и я думаю, что метод GetMixer () будет делать то, что вы хотите.

...