在C#中更改主卷

时间:2011-08-29 08:18:16

标签: c# audio

好吧,我有一个问题,我只是努力改变C#中的主音量,似乎问题的答案似乎在做火箭科学,或者他们只是添加了一堆额外的垃圾。

有人可以告诉我如何创建一个具有Volume {get {} set {}}属性的类,让我可以更改主卷。要求是它必须在64位和32位操作系统中工作。没有别的,只是一个体积整数。

1 个答案:

答案 0 :(得分:0)

您可以从以下代码中获得一个想法,而不是将这些函数放在事件中,在属性设置器中调用它们。

这样做:

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;
private const int APPCOMMAND_MEDIA_PLAY_PAUSE = 0xE0000;


[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg,
    IntPtr wParam, IntPtr lParam);

public Form1()
{
    InitializeComponent();
}

private void btnPlayPause_Click(object sender, EventArgs e)
{
    SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
        (IntPtr)APPCOMMAND_MEDIA_PLAY_PAUSE);
}

private void btnMute_Click(object sender, EventArgs e)
{
    SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
        (IntPtr)APPCOMMAND_VOLUME_MUTE);
}

private void btnDecVol_Click(object sender, EventArgs e)
{
    SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
        (IntPtr)APPCOMMAND_VOLUME_DOWN);
}

private void btnIncVol_Click(object sender, EventArgs e)
{
    SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
        (IntPtr)APPCOMMAND_VOLUME_UP);
}
希望这有帮助。