Declare Function auxGetVolume Lib "winmm" (ByVal uDeviceID As Long, lpdwVolume As Long) As Long
auxGetVolume получает текущие настройки громкости звука для дополнительных устройств. Если устройство имеет возможность, функция способна получать значения громкости отдельно для правого и левого каналов.
В успешном случае функция возвращает MMSYSERR_NOERROR. В случае ошибки возвращаются коды ошибок, например MMSYSERR_BADDEVICEID (недействительный идентификатор)
' Получим текущий уровень громкости ' для первого дополнительного устройства Dim auxinfo As AUXCAPS ' информация об устройстве Dim numvols As Long ' число каналов Dim lrvol As Long ' общий уровень громкости Dim lvol As Integer, rvol As Integer ' раздельно для двух каналов Dim retval As Long ' возвращаемое значение ' Определим, сколько каналов у первого устройства retval = auxGetDevCaps(0, auxinfo, Len(auxinfo)) If retval <> 0 Then Print "Ошибк. Не могу определить устройство" End End If If (auxinfo.dwSupport And AUXCAPS_LRVOLUME) = AUXCAPS_LRVOLUME Then numvols = 2 ' есть два канала Else numvols = 1 ' только один канал (моно) End If ' Текущий уровень громкости retval = auxGetVolume(0, lrvol) If numvols = 2 Then lvol = Val("&H" & Hex(lrvol And (Not &HFFFF0000))) rvol = (lrvol And &HFFFF0000) / &H10000 Print "Левый канал: "; Hex(lvol) Print "Правый канал: "; Hex(rvol) Else lvol = Val("&H" & Hex(lrvol And (Not &HFFFF0000))) Print "Уровень громкости: "; hex(lvol) End If