WAV-, MID- und AVI-Dateien abspielen
Versionen: Access 97, 2000 und 2002
Für die Ausgabe oder Anzeige von Multimedia-Dateien der Formate WAV, MID oder AVI stellt Access keine internen Funktionen bereit. Dabei wäre beispielsweise das Abspielen einer speziellen WAV-Datei als akustischer Hinweis auf eine besondere Fehlermeldung häufig sinnvoll. Aber auch das Abspielen von MIDI-Dateien zum Beispiel als Hintergrund-Begleitung eines Menü-Formulars oder das Anzeigen eines AVI-Films als Ergänzung zu einem Hilfe-Formular sind praktische Einsatzgebiete für solche Funktionen.
Mit Hilfe einiger VBA-Routinen lässt sich eine solche Funktionalität allerdings recht einfach nachrüsten. Basis sind API-Funktionen für den Multimedia-Bereich, die über die DLL "winmm.dll" in Access eingebunden und mit entsprechenden Parametern aufgerufen werden können. Gehen Sie dazu wie folgt vor:
Wechseln Sie im Datenbankfenster in den Bereich "Module" und klicken Sie auf die Schaltfläche Neu.
Geben Sie im allgemeinen Teil des Moduls folgende Deklarationen ein:
Declare Function PlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
Im Anschluss geben Sie die folgenden Funktionen im Modul ein:
Function PlayMMFile(strMMFile As String) As Long
Dim lngReturnCode As Long, strReturnMsg As String
Const mmASYNC = 1
Select Case ExtOnly(strMMFile)
Case "WAV":
lngReturnCode = PlaySound(strMMFile, mmASYNC)
Case "AVI", "MID":
strReturnMsg = String$(255, 0)
lngReturnCode = mciSendString("play " & _
Chr$(34) & strMMFile & Chr$(34), _
strReturnMsg, 255, 0)
End Select
PlayMMFile = lngReturnCode
End Function
Function StopMMFile(strMMFile As String) As Long
Dim lngReturnCode As Long, strReturnMsg As String
Const mmASYNC = 1
Select Case ExtOnly(strMMFile)
Case "WAV":
lngReturnCode = PlaySound(0, mmASYNC)
Case "AVI", "MID":
strReturnMsg = String$(255, 0)
lngReturnCode = mciSendString("stop " & strMMFile, _
strReturnMsg, 255, 0)
End Select
StopMMFile = lngReturnCode
End Function
Private Function ExtOnly(strPath As String) As String
Dim I As Integer, L As Integer
ExtOnly = ""
strPath = Trim$(strPath)
If strPath = "" Then Exit Function
L = Len(strPath)
For I = L To 1 Step -1
If Mid$(strPath, I, 1) = "." Then
ExtOnly = UCase$(Mid$(strPath, I + 1))
Exit Function
End If
Next
End Function
Sichern Sie das Modul unter dem Namen "modMMFiles" und verlassen Sie die VBA-Entwicklungsumgebung.
In Ihren Datenbanken können Sie nun beliebige Multimedia-Dateien durch Aufrufe wie die folgenden abspielen:
X = PlayMMFile("c:\windows\media\ding.wav")
X = PlayMMFile("c:\windows\media\canyon.mid")
X = PlayMMFile("z:\test\erlaeuterung.avi")
Um das Abspielen zu stoppen, rufen Sie "StopMMFile()" mit dem gleichen Parameter auf:
X = StopMMFile("c:\windows\media\ding.wav")
X = StopMMFile("c:\windows\media\canyon.mid")
X = StopMMFile("z:\test\erlaeuterung.avi")
Die Rückmeldung der Funktionen vom Datentyp "Long" ist der vom Multimedia-System (MCI, Multimedia Control Interface) gemeldete Return Code. Dabei handelt es sich in der Regel um eine "0" für MID- und AVI-Dateien beziehungsweise um eine "1" bei WAV-Dateien. Andere Werte als "0" oder "1" stellen eine Fehlernummer dar. Über diese Fehlernummer können Sie einen Klartext vom MCI abrufen und beispielsweise für eigene Fehlermeldungen einsetzen. Möchten Sie davon Gebrauch machen, öffnen Sie das Modul "modMMFiles" im Entwurfsmodus und geben dort die folgende zusätzliche Deklaration und eine weitere Funktion "GetMMErrorMsg()" ein:
Declare Function mciGetErrorString Lib "winmm.dll" _
Alias "mciGetErrorStringA" _
(ByVal dwError As Long, _
ByVal lpstrBuffer As String, _
ByVal uLength As Long) As Long
Function GetMMErrorMsg(lngMMErrCode As Long) As String
Dim lngX As Long, strErrMsg As String
strErrMsg = String$(255, 0)
lngX = mciGetErrorString(lngMMErrCode, strErrMsg, 255)
GetMMErrorMsg = Left$(strErrMsg, Len(strErrMsg) - 1)
End Function
Eine entsprechende Abfrage in Ihren VBA-Routinen könnte dann beispielsweise wie folgt aussehen:
X = PlayMMFile("z:\test\erlaeuterung.avi")
If X > 0 Then
MsgBox "AVI-Film nicht gefunden: " & GetMMErrorMsg(X)
Exit Sub
End If
Die Funktion "ExtOnly()" ist eine Hilfs-Funktion, die zur Ermittlung der Erweiterung aus dem Dateinamen dient. Anhand der Erweiterung erkennen "PlayMMFile()" und "StopMMFile()", welche API- beziehungsweise MCI-Funktionen sie jeweils aufrufen müssen, da WAV-Dateien anders als MID- oder AVI-Dateien gehandhabt werden.
© 1996-2024 Tibe Services Tim Berlebach, Zangerstraße 22, 65375
Oestrich-Winkel,
Tel: 06723
889005, Fax: 06723 889006, E-Mail: info(at)tibe.de, Internet: www.tibe.de