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

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

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

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

Beschreibung:
Diese Funktion setzt 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 auxSetVolume Lib "winmm.dll" ( _
  ByVal uDeviceID As Long, _
  ByVal dwVolume As Long) As Long

Parameter:
uDeviceIDGerä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.
dwVolume(Long). Wert, der die Lautstärke beider Kanäle angibt.

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 auxSetVolume Lib "winmm.dll" ( _
  ByVal uDeviceID As Long, _
  ByVal dwVolume As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
  Alias "RtlMoveMemory" ( _
  Destination As Any, _
  Source As Any, _
  ByVal Length As Long)
 
Private Const MMSYSERR_NOERROR = 0
Private Const MMSYSERR_BASE = 0
Private Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE + 2)
Private Sub Command1_Click()
  Dim Volume(1) As Integer, AuxSetVol As Long
  Dim Retval As Long, Gerät As Integer
 
  Gerät = 0 ' meist Wave
 
  ' Stumm schalten
  MsgBox "Die Lautstärke wird jetzt auf 0% geschaltet", vbInformation, _
    "Stumm schalten"
  Volume(0) = 0  'Linker Kanal = ganz leise
  Volume(1) = 0  'Rechter Kanal = ganz leise
  Call CopyMemory(AuxSetVol, Volume(0), Len(Volume(0)) * 2)
  Retval = auxSetVolume(Gerät, AuxSetVol)
  If Retval = MMSYSERR_BADDEVICEID Then _
    MsgBox "Gerät " & Gerät & " wurde nicht gefunden", _
  vbCritical, "Fehler": Exit Sub
 
  ' Mittlere Lautstärke
  MsgBox "Die Lautstärke wird jetzt auf 50% geschaltet", vbInformation, _
    "Mittlere Lautstärke"
  Volume(0) = 32767  'Linker Kanal = ca. 50%
  Volume(1) = 32767  'Rechter Kanal = ca. 50%
  Call CopyMemory(AuxSetVol, Volume(0), Len(Volume(0)) * 2)
  Retval = auxSetVolume(Gerät, AuxSetVol)
  If Retval = MMSYSERR_BADDEVICEID Then MsgBox "_
    Gerät " & Gerät & " wurde nicht gefunden", _
  vbCritical, "Fehler": Exit Sub
 
  ' Volle Lautstärke
  MsgBox "Die Lautstärke wird jetzt auf 100% geschaltet", vbInformation, _
    "Volle Lautstärke"
  Volume(0) = -1  'Linker Kanal = 100%
  Volume(1) = -1  'Rechter Kanal = 100%
  Call CopyMemory(AuxSetVol, Volume(0), Len(Volume(0)) * 2)
  Retval = auxSetVolume(Gerät, AuxSetVol)
  If Retval = MMSYSERR_BADDEVICEID Then _
    MsgBox "Gerät " & Gerät & " wurde nicht gefunden", _
  vbCritical, "Fehler": Exit Sub
 
  ' Geteilte Lautstärke
  MsgBox "Die Lautstärke wird jetzt auf 100% / 0% geschaltet", vbInformation, _
    "Geteilte Lautstärke"
  Volume(0) = -1  'Linker Kanal = 100%
  Volume(1) = 0  'Rechter Kanal = 0%
  Call CopyMemory(AuxSetVol, Volume(0), Len(Volume(0)) * 2)
  Retval = auxSetVolume(Gerät, AuxSetVol)
  If Retval = MMSYSERR_BADDEVICEID Then _
    MsgBox "Gerät " & Gerät & " wurde nicht gefunden", _
  vbCritical, "Fehler": Exit Sub
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.