vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Audio & Multimedia09.05.01
auxGetVolume-Funktion

Diese Funktion liefert die Lautstärke-Einstellung für ein auxiales Ausgabegerät.

Betriebssystem:  Win95, Win98, WinNT, Win2000, WinMEViews:  14.030 

Beschreibung:
Diese Funktion liefert die Lautstärke-Einstellung für ein auxiales Ausgabegerät.

Achtung:
Hat das Gerät nur einen Monokanal so ist die Lautstärke nur der "Low order word" der lpdwVolume Variable. Um herauszufinden ob ein Audiogerät 2 Stereo Kanäle, nur einen Monokanal oder die Lautstärke-Einstellung überhaupt nicht besitzt, kann man die auxGetDevCaps-Funktion aufrufen. Der Gültigkeitbereich der Lautstärke eines Audiokanals ist von "0" (ganz leise) über "32767" (mittel) bis "-1" (ganz laut)

Beispiel:
Ganz leise = 0
etwas lauter = 11000
fast mittellaut = 32000
mehr als mittellaut = -32000
noch lauter = -11000
Ganz laut = -1

Deklaration:

Declare Function auxGetVolume Lib "winmm.dll" ( _
  ByVal uDeviceID As Long, _
  lpdwVolume As Long) As Long

Parameter:
uDeviceID Geräte-Index. Ist ein Geräte-Index ungültig, wird "MMSYSERR_BADDEVICEID" zurückgegeben. Um die Geräte ID's zu ermitteln kann man die auxGetDevCaps-Funktion aufrufen.
lpdwVolume (Long). War der Funktionsaufruf erfolgreich, werden hier die Lautstärke-Einstellungen beider Kanäle zurückgegeben.

Rückgabewert:
Die Funktion liefert "MMSYSERR_NOERROR" zurück, wenn der Funktionsaufruf erfolgreich war, andernfalls (z.B. ungültige DeviceID) wird "MMSYSERR_BADDEVICEID" zurückgegeben.

Rückgabekonstanten:

Const MMSYSERRR_NOERROR = 0 ' Kein Fehler
Const MMSYSERR_BASE = 0 ' Basis Konstante
Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE+ 2) ' Falscher Geräte ID

Beispiel:

Private Declare Function auxGetVolume Lib "winmm.dll" ( _
  ByVal uDeviceID As Long, _
  lpdwVolume As Long) As Long 
 
' für das zweite Beispiel "CopyMemory"
Private Declare Sub CopyMemory Lib "kernel32" _
  Alias "RtlMoveMemory" ( _
  Destination As Any, _
  Source As Any, _
  ByVal Length As Long) 
 
Const MMSYSERRR_NOERROR = 0 ' Kein Fehler
Const MMSYSERR_BASE = 0 ' Basis Konstante
Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE+ 2) ' Falscher Geräte ID
' Beispiel 1: Die Berechnung der Lautstärke des ersten Audiogerätes (Index 0)
Private Sub Command1_Click () 
  Dim Retval As Long, AuxReturn As Long 
  Dim RightVol As Long, LeftVol As Long 
 
  Retval = auxGetVolume(CLng(0), AuxReturn) ' Lautstärke beider Kanäle ermitteln
 
  If Retval = MMSYSERR_BADDEVICEID Then 
    MsgBox "Das Audiogerät mit der DeviceID 0 existiert nicht", vbCritical, "Fehler" 
    Exit Sub 
  End If 
 
  If Retval = MMSYSERR_NOERROR Then 
    LeftVol = Val ("&H" & Hex(AuxReturn And (Not &HFFFF0000))) 
    RightVol = (AuxReturn And &HFFFF0000) / &H10000 
 
    Debug.Print "Gerät : 0" 
    If RightVol <> 0 Then ' Falls das Gerät nur einen Monokanal hat
      Debug.Print "Lautstärke Links: " & LeftVol 
      Debug.Print "Lautstärke Rechts: " & RightVol 
    Else 
      Debug.Print "Lautstärke Links: " & LeftVol 
    End If 
    Debug.Print vbCrLf 
  End If 
End Sub
' Beispiel 2: Die Berechnung der Lautstärke des ersten Audiogerätes (Index 0)
Private Sub Command2_Click () 
  Dim Retval As Long 
  Dim Volume(1) As Integer, AuxReturn As Long 
  Dim RightVol As Long, LeftVol As Long 
 
  Retval = auxGetVolume(CLng(0), AuxReturn) ' Lautstärke beider Kanäle ermitteln
 
  If Retval = MMSYSERR_BADDEVICEID Then 
    MsgBox "Das Audiogerät mit der DeviceID 0 existiert nicht", vbCritical, "Fehler" 
    Exit Sub 
  End If 
 
  If Retval = MMSYSERR_NOERROR Then 
    CopyMemory Volume(0), AuxReturn, Len(Volume(0)) * 2 
    LeftVol = Volume(0) 
    RightVol = Volume(1) 
 
    Debug.Print "Gerät : 0" 
    If RightVol <> 0 Then ' Falls das Gerät nur einen Monokanal hat 
      Debug.Print "Lautstärke Links: " & LeftVol 
      Debug.Print "Lautstärke Rechts: " & RightVol 
    Else 
      Debug.Print "Laustärke: " & LeftVol 
    End If 
    Debug.Print vbCrLf 
  End If 
End Sub

 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.