Rubrik: Multimedia & Sound · Audio | VB-Versionen: VB4, VB5, VB6 | 22.04.02 |
![]() Das Abspielen zweier oder mehrerer WAVE-Dateien stellt für viele ein Problem dar - bis jetzt ;-)) | ||
Autor: ![]() | Bewertung: ![]() ![]() ![]() ![]() ![]() | Views: 27.929 |
https://www.tools4vb.com | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | ![]() |
Das Abspielen von WAVE-Dateien kann entweder über das MCI-Control erfolgen oder auch per API-Funktion sndPlaySound. Das ganze klappt auch ganz gut - doch: Sollen zwei oder mehrere WAVE-Dateien gleichzeitig abgespielt werden, braucht man entweder mehrere MCI-Controls - die API-Funktion z.B. scheidet hier sofort aus!
Es gibt aber noch einen Weg, eine WAVE-Datei abzuspielen - wiederum per API-Funktion - aber diesmal mit Hilfe der universellen Funktion mciSendString. Und hiermit ist es dann auch möglich zwei oder noch mehr WAVE-Dateien gleichzeitig abzuspielen.
Alles was man beachten muss, ist daß man für jede abzuspielende WAVE-Datei ein eindeutigen AliasName benutzt, über den das Abspielen und Stoppen der Wiedergabe erfolgt.
Kopieren Sie nachfolgenden Code in ein Modul:
' benötigte API-Deklaration Private Declare Function mciSendString Lib "winmm.dll" _ Alias "mciSendStringA" ( _ ByVal lpszCommand As String, _ ByVal lpszReturnString As String, _ ByVal cchReturnLength As Long, _ ByVal hwndCallback As Long) As Long Private Declare Function GetShortPathName Lib "kernel32" _ Alias "GetShortPathNameA" ( _ ByVal lpszLongPath As String, _ ByVal lpszShortPath As String, _ ByVal cchBuffer As Long) As Long
' WAVE-File abspielen Public Function WAVE_Play(ByVal sFile As String, _ ByVal sAlias As String) As Boolean Dim bResult As Boolean ' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen ' wie Leerzeichen Probleme machen Dim sBuffer As String Dim lResult As Long sBuffer = Space$(255) lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer)) If lResult <> 0 Then sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1) ' MCI öffnen If mciSendString("open " & sFile & _ " type WaveAudio alias " & sAlias, 0, 0, 0) = 0 Then ' WAVE abspielen mciSendString "play " & sAlias & " from 0", 0, 0, 0 End If End If WAVE_Play = bResult End Function
' Wiedergabe stoppen und MCI schließen Public Sub WAVE_Stop(ByVal sAlias As String) mciSendString "stop " & sAlias, 0, 0, 0 mciSendString "close " & sAlias, 0, 0, 0 End Sub
Beispiel für das Abspielen zweier WAVE-Files
Dim sFile1 As String Dim sFile2 As String sFile1 = "Wave_1.wav" sFile2 = "Wave_2.wav" ' Wiedergabe starten WAVE_Play sFile1, "MyWAVE_1" WAVE_Play sFile2, "MyWAVE_2"
' Wiedergabe stoppen und MCI schließen WAVE_Stop "MyWAVE_1" WAVE_Stop "MyWAVE_2"