mci驱动程序没有提供控制音量的指令。用WINDOWS的可以直接控制。可能不和你的要求。
SHELL “SNDVOL32。EXE”,VBNORMALFOUCUS
SHELL “SNDVOL32。EXE”,VBNORMALFOUCUS
解决方案 »
- 怎样修改用户控件ctl?
- BarCodeCtrl怎么使用,能不能给一段具体的代码
- 如何獲取任務管理器的各進程的版本信息?
- 怎么调用不了 “Outlook Express”?
- vb6可不可以用msde作为本地数据库,本地连接串怎么写?下午一点的飞机赶着去测试,急死了!
- 这里难道没有高手了吗!!!!!!!!!!!
- 请教一个文件copy的问题
- 冀人社发[2011]3号退休调待计算表(EXCEL)
- 我想在vb的窗口上显示一个动画及唱一首歌,如何做?谢谢
- 程序编译连接后在他人机子上运行时提示dll out of date怎么办?
- Winsock控件莫名其妙变成了PictureBox控件
- 用VB做安装程序需要有那些步骤?
用api可以我以前写过一个模块可以完成你的要求!
不过有点长,你的email是多少!我发给你!
Public Type VolumeSetting
LeftVol As Integer
RightVol As Integer
End TypeDeclare Function auxGetVolume Lib "winmm.dll" (ByVal uDeviceID As Long, ByRef lpdwVolume As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)Public Function lGetVolume(ByRef lLeftVol As Long, ByRef lRightVol As Long, lDeviceID As Long) As Long
Dim bReturnValue As Boolean
Dim Volume As VolumeSetting Dim lAPIReturnVal As Long
Dim lBothVolumes As Long
'取得返回值
lAPIReturnVal = auxGetVolume(lDeviceID, lBothVolumes)
lDataLen = Len(Volume)
CopyMemory Volume.LeftVol, lBothVolumes, lDataLen
'计算返回值
lLeftVol = HIGHEST_VOLUME_SETTING * lUnsigned(Volume.LeftVol) / 65535
lRightVol = HIGHEST_VOLUME_SETTING * lUnsigned(Volume.RightVol) / 65535
end sub Public Function nSigned(ByVal lUnsignedInt As Long) As Integer
Dim nReturnVal As Integer
If lUnsignedInt > 65535 Or lUnsignedInt < 0 Then
MsgBox "Error in conversion from Unsigned to nSigned Integer"
nSignedInt = 0
Exit Function
End If If lUnsignedInt > 32767 Then
nReturnVal = lUnsignedInt - 65536
Else
nReturnVal = lUnsignedInt
End If
nSigned = nReturnValEnd Function
我需要的不是音量控制,而是输出波形的waveline的最大值和当前值,用来产生我的波形图,就像winamp左上的那种随着声音的大小显示不同高度的方法.
我已经做好了wav文件的显示,但cd的不行,可能是因为cd的音流不通过这个设备,或者是我的类型设置的不对.
我用的是mixerGetLineInfo这个API函数,
MIXER_GETLINEINFOF_COMPONENTTYPE 定义成 &H3&
是不是把这个常量值换一下就可以了?我的信箱是[email protected]
谢谢先.