Rubrik: Multimedia & Sound · Audio | VB-Versionen: VB4, VB5, VB6 | 12.08.03 |
MIDI abspielen mit Hilfe des Windows-API Abspielen einer MIDI-Datei mit Hilfe der API-Funktion "mciSendString" | ||
Autor: Michael Fuhrer | Bewertung: | Views: 21.944 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das nachfolgende Beispiel zeigt, wie Sie eine MIDI-Datei mit Hilfe der API-Funktion mciSendString abspielen können.
Hinweiss:
Die mciSendString-Funktion erfordert den kurzen 8.3 Dateiname, da sonst fehler auftreten. Den kurzen Dateinamen kann man mit Hilfe der API-Funktion GetShortPathName ermitteln.
Zunächst die 2 API-Funktionen, die Sie bitte in den Allgemeinen Teil des Form-Moduls einfügen:
Option Explicit ' Benötigte API-Deklarationen ' kurzer Pfad(8.3) ermitteln Private Declare Function GetShortPathName Lib "kernel32" _ Alias "GetShortPathNameA" ( _ ByVal lpszLongPath As String, _ ByVal lpszShortPath As String, _ ByVal cchBuffer As Long) As Long ' Sound, Video, infos, spielen u.s.w. Private 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
Die folgende Funktion ermittelt den kurzen Pfad-/Dateinamen einer Datei:
' kurzer Pfad ermitteln (8.3) Private Function Get_ShortFullPath( _ ByVal FullPath As String) As String Dim Buffer As String Buffer = Space$(256) If GetShortPathName(FullPath, Buffer, Len(Buffer)) <> 0 Then Get_ShortFullPath = Left$(Buffer, _ InStr(Buffer, vbNullChar) - 1) End If End Function
Zum Abspielen einer MIDI-Datei rufen Sie die MidiPlay-Funktion auf:
' MIDI-Datei abspielen Private Function MidiPlay(ByVal FullPath As String) As Boolean Dim Buffer As String Dim ErrHandler As Long Dim ShortFullPath As String ' Prüfen ob eine MIDI-Datei übergeben wurde If UCase$(Mid$(FullPath, Len(FullPath) - 2)) <> "MID" Then MidiPlay = False: Exit Function End If ' Prüfen ob der kurze pfad übergeben wurde ShortFullPath = Get_ShortFullPath(FullPath) If Len(ShortFullPath) = 0 Then MidiPlay = False: Exit Function End If Buffer = Space$(256) ErrHandler = mciSendString("open sequencer!" & _ ShortFullPath & " alias MIDI", Buffer, Len(Buffer), 0) ErrHandler = mciSendString("play MIDI", Buffer, _ Len(Buffer), 0) MidiPlay = (ErrHandler = 0) End Function
Das Stoppen des Abspielvorgangs erfolgt über die MidiStop-Prozedur:
' Abspielvorgang stoppen Private Sub MidiStop() mciSendString "stop MIDI", 0, 0, 0 mciSendString "close MIDI", 0, 0, 0 End Sub
So, wenn Sie den Code soweit eingefügt haben, bitte auf der Form noch zwei Buttons einfügen (cmdPlay und cmdStop).
Private Sub cmdPlay_Click() ' hier ggf. den Pfad anpassen If Not MidiPlay("C:\WINDOWS\MEDIA\onestop.mid") Then MsgBox "Midi datei kann nicht abgespielt werden!" End If End Sub
Private Sub cmdStop_Click() MidiStop End Sub
Hinweis:
Beim Beenden der Anwendung sollten Sie zur Sicherheit ebenfalls die MidiStop-Prozedur aufrufen, da die MIDI-Datei sonst unabhängig von der Anwendung weiter abgespielt wird.
Private Sub Form_Unload(Cancel As Integer) MidiStop End Sub