如何判断主音量是否静音?

Joh*_*res 3 c# audio winapi mute

我使用以下内容将计算机上的主音频静音/取消静音.现在,我正在寻找一种确定静音状态的方法.在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);
Run Code Online (Sandbox Code Playgroud)

小智 8

嗨,你只是偶然发现了这个老话题,但是我正在努力解决同样的问题.

我用以下方法解决了:

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);
Run Code Online (Sandbox Code Playgroud)

静音不会总是使音频静音,这是一个切换 - 但如果你确保首先调用"取消静音",你应该是金色的.

最好的问候Kurt