vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Multimedia & Sound · Audio   |   VB-Versionen: VB4, VB5, VB612.08.03
MIDI abspielen mit Hilfe des Windows-API

Abspielen einer MIDI-Datei mit Hilfe der API-Funktion "mciSendString"

Autor:   Michael FuhrerBewertung:     [ Jetzt bewerten ]Views:  21.914 
ohne HomepageSystem:  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

Dieser Tipp wurde bereits 21.914 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel