Declare Function waveOutGetVolume Lib "winmm.dll" (ByVal uDeviceID As Long, lpdwVolume As Long) As Long
Platforms: Win 95/98, Win NT
waveOutGetVolume finds the current volume setting for a waveform output device. The volume setting is placed in the variable passed as lpdwVolume and is split into a high-order word and a low-order word. If the device supports separate left and right channel volumes, the low-order word contains the left volume and the high-order word contains the right volume. If it does not, the low-order word contains the overall volume and the high-order word is ignored. Volume values range from silence (&H0) to maximum (&HFFFF). The function returns 0 if successful, or a non-zero error code if an error occured.
Example:
' Display the current volume setting for waveform output device 0. Note
' that we must first determine if separate volumes are returned or not, in order to know
' how to interpret the volume returned. (We assume waveform output device #0 exists.)
Dim volume As Long ' receives volume(s)
Dim lvolume As Long, rvolume As Long ' separate channel volumes
Dim spkrcaps As WAVEOUTCAPS ' needed to find volume interpretation
Dim numvols As Integer ' will be 1 if only one volume setting or 2 if there are two
Dim retval As Long ' return value
' First, find out whether the left and right channels have separate volumes.
retval = waveOutGetDevCaps(0, spkrcaps, Len(spkrcaps)) ' get information
If (spkrcaps.dwSupport And WAVECAPS_LRVOLUME) = WAVECAPS_LRVOLUME Then
numvols = 2 ' separate channel volumes
Else
numvols = 1 ' only one volume
End If
' Get the volume setting(s) and display them in hexadecimal.
retval = waveOutGetVolume(0, volume)
If numvols = 1 Then ' if only one channel volume
volume = volume And &HFFFF ' destroy irrelevant high-order word
Debug.Print "Waveform Output Device #0 volume: "; Hex(volume)
Else ' if separate channel volumes
lvolume = volume And &HFFFF ' isolate left speaker volume
rvolume = (volume And &HFFFF0000) / &H10000 ' isolate right speaker volume
Debug.Print "Waveform Output Device #0 left channel volume: "; Hex(lvolume)
Debug.Print "Waveform Output Device #0 right channel volume: "; Hex(rvolume)
End If
See Also: waveOutSetVolume
Category: Audio
Go back to the alphabetical Function listing.
Go back to the Reference section index.
This page is copyright © 2000 Paul Kuliniewicz. Copyright Information.
Go back to the Windows API Guide home page.
E-mail: vbapi@vbapi.com Send Encrypted E-Mail
This page is at http://www.vbapi.com/ref/w/waveoutgetvolume.html