mci驱动程序没有提供控制音量的指令。用WINDOWS的可以直接控制。可能不和你的要求。
SHELL “SNDVOL32。EXE”,VBNORMALFOUCUS

解决方案 »

  1.   

    分数这么容易赚吗!
    用api可以我以前写过一个模块可以完成你的要求!
    不过有点长,你的email是多少!我发给你!
      

  2.   

    Public Const HIGHEST_VOLUME_SETTING = 12
    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
      

  3.   

    对不起,可能是我没说清楚.
    我需要的不是音量控制,而是输出波形的waveline的最大值和当前值,用来产生我的波形图,就像winamp左上的那种随着声音的大小显示不同高度的方法.
    我已经做好了wav文件的显示,但cd的不行,可能是因为cd的音流不通过这个设备,或者是我的类型设置的不对.
    我用的是mixerGetLineInfo这个API函数,
    MIXER_GETLINEINFOF_COMPONENTTYPE 定义成 &H3&
    是不是把这个常量值换一下就可以了?我的信箱是[email protected]
    谢谢先.