Private Declare Function waveOutGetVolume Lib "winmm.dll" _
(ByVal uDeviceID As Long, lpdwVolume As Long) As Long
Private Declare Function waveOutSetVolume Lib "winmm.dll" _
(ByVal uDeviceID As Long, ByVal dwVolume As Long) As Long
Private Declare Function waveOutGetDevCaps Lib "winmm.dll" _
Alias "waveOutGetDevCapsA" (ByVal uDeviceID As Long, _
lpCaps As WAVEOUTCAPS, ByVal uSize As Long) As Long
Const WAVE_MAPPER = -1&
Const MAXPNAMELEN = 32
Private Type WAVEOUTCAPS
wMid As Integer
wPid As Integer
vDriverVersion As Long
szPname As String * MAXPNAMELEN
dwFormats As Long
wChannels As Integer
dwSupport As Long
End Type
Private Sub Form_Load()
Dim lVol As Long
Dim tWaveCaps As WAVEOUTCAPS
waveOutGetVolume WAVE_MAPPER, lVol
HScroll1.Value = (lVol And 255)
HScroll2.Value = ((lVol \ 65536) And 255)
End Sub
Private Sub HScroll1_Change()
Dim lVol As Long
lVol = HScroll2.Value * 65536
Debug.Print waveOutSetVolume(WAVE_MAPPER, (lVol Or HScroll1.Value))
End Sub
Private Sub HScroll2_Change()
Dim lVol As Long
lVol = HScroll2.Value * 65536
Debug.Print waveOutSetVolume(WAVE_MAPPER, (lVol Or HScroll1.Value))
End Sub