Sitemap Fernwartung Impressum
Online Tipps & Tricks
WAV-, MID- und AVI-Dateien abspielen (Access)
01.07.2011

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.

Öffnungszeiten
Ladengeschäft:
Montag bis Donnerstag
15:00-18:00 Uhr
Freitag
8:30:13:00 Uhr
Samstag
nach Terminvereinbarung

Wir vereinbaren auch
gerne Termine über unsere
Öffnungszeiten hinaus.

Telefon:
06723 889005

Telefax:
06723 889006

E-Mail:
info@tibe.de

Adresse:
Tibe Services
Inhaber: Tim Berlebach
Zangerstraße 22
65375 Oestrich-Winkel /
Ortsteil Hallgarten

Öffentlicher Parkplatz:
Taunusstraße/
Ecke Zangerstraße


 Preisänderungen und Irrtümer bleiben vorbehalten.  Angebot gilt solange Vorrat reicht!

© 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