回 帖 发 新 帖 刷新版面

主题:[讨论]请教如何控制音量.

我是新手,望各位高手GG赐教.
比如现在我在窗体上画了两个按钮 cmd1 cmd2
点一下cmd1系统主音量降低一点,点一下cmd2主音量提高一点.不要弹出调节音量的那个界面怎么做呀.谢谢啦!

回复列表 (共2个回复)

沙发

用winAPI,下面几个:
long GetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc) ;
unsigned GetVolumeValue(HMIXER hmixer ,MIXERCONTROL *mxc);
bool SetVolumeValue(HMIXER hmixer ,MIXERCONTROL *mxc, long volume);
bool SetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc, bool mute);

板凳

我前几天正搞这个,下面是我从网上找到的源码:

Private Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As Integer, ByVal dwVolume As Long) As Integer
Private Declare Function waveOutGetVolume Lib "Winmm" (ByVal wDeviceID As Integer, dwVolume As Long) As Integer

Private Sub Command1_Click() '得到当前系统音量值把它显示在文本框text1中,我搞了一下大概是32845、65535这样的默认值
Dim a, i As Long
Dim tmp As String

a = waveOutGetVolume(0, i)
tmp = "&h" & Right(Hex$(i), 4)
text1.text = CLng(tmp)
End Sub

Private Sub Command2_Click() '以text1中的值设定为当前音量
Dim a, i As Long
Dim tmp, vol As String

vol = Text1
tmp = Right((Hex$(vol + 65536)), 4)
vol = CLng("&H" & tmp & tmp)
a = waveOutSetVolume(0, vol)
End Sub

这段程序确实可以增大和缩小音量,但是我发现好象音量调节钮是不变的,它还在那个位置不动,也许用楼上的API就行,要不楼主试试一下看有什么不同。

我来回复

您尚未登录,请登录后再回复。点此登录或注册