2011-08-29 50 views
2

好吧,我有一个问题,我已经尝试过这么辛苦,只是改变在C#中的主卷,似乎问题的回答者似乎在做火箭科学,或者他们只是添加一堆额外的垃圾。改变主卷在C#

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

+0

嗨,你已经按照这个教程? http://www.dreamincode.net/forums/topic/45693-controlling-sound-volume-in-c%23/ –

回答

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

希望这有助于。

+0

其实你基本上做了和其他人一样的表单和所有事情,但是谢谢,因为这看起来像它实际上是失败的,它很容易理解。 –

+0

这不会通过Windows资源管理器运行,是吗?因为这非常可疑,不会与我正在做的事情一起工作。 –

+0

哦,顺便说它不起作用。我设计的软件应该取代Windows资源管理器,所以这不起作用,因为它是消息传递资源管理器。 –