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

时间:2010-12-30 02:21:32

标签: c# winapi audio 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);

3 个答案:

答案 0 :(得分: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);

静音不会总是使音频静音,而是一个切换 - 但如果你确定先调用“取消静音”,那么你应该是金色的。

祝你好运 库尔特

答案 1 :(得分:0)

查看以下tutorial。我从未在C#(或任何其他语言)中使用混音器,因此我假设它们在P /调用Win32 API中是正确的,并且它们不是重新发明轮子。您可以下载该示例,我认为方法GetMixer()将执行您想要的操作。

答案 2 :(得分:0)

在上述评论中归功于RRUZ。请参阅stackoverflow.com/questions/294292。唯一的问题是您需要兼容模式。