Rubrik: Audio & Multimedia | 09.05.01 |
![]() Diese Funktion setzt die Lautstärke-Einstellung für ein auxiales Ausgabegerät. | ||
Betriebssystem: Win95, Win98, WinNT, Win2000, WinME | Views: 17.484 |
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:
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 ![]() |
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