Wie man eine MP3-Datei abspielt, haben wir Ihnen bereits in früheren Tipps & Tricks gezeigt, u.a. auch die API-Variante. Und genau auf dieser Variante baut unser heutiger Tipp auf. Diesmal zeigen wir Ihnen, wie sich eine MP3-Datei im Loop abpsielen lässt, d.h. sobald der Abspielvorgang beendet ist, beginnt das Szenario wieder von vorne. Alles, was wir hierzu brauchen, ist ein Timer-Control, das uns ständig über die Restdauer informiert, so dass der Abspielvorgang bei einer Restdauer von 0 von vorne beginnen kann. Erstellen Sie ein neues Projekt und plazieren auf die Form zwei CommandButtons: cmdPlay und cmdStop. Und natürlich ein Timer-Control - Timer1. Alles andere erledigen wir dann per Code. Option Explicit ' benötigte API-Deklarationen 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 Private Declare Function GetShortPathName Lib "kernel32" _ Alias "GetShortPathNameA" ( _ ByVal lpszLongPath As String, _ ByVal lpszShortPath As String, _ ByVal cchBuffer As Long) As Long Private Sub Form_Load() ' Timer initialisieren Timer1.Enabled = False Timer1.Interval = 100 End Sub Private Sub Form_Unload(Cancel As Integer) ' Abspielvorgang beenden und MP3 schließen cmdStop.Value = True End Sub ' MP3-Datei öffnen Private Sub OpenMP3(ByVal sFile As String) Dim sBuffer As String Dim lResult As Long Dim sReturn As String ' Da die mciSendString Funktion mit langen Dateinamen ' nicht korrekt arbeitet, muss zuvor der kurze ' 8.3 Dateiname der MP3-Datei ermittelt werden. sBuffer = Space$(255) lResult = GetShortPathName(sFile, sBuffer, _ Len(sBuffer)) If lResult <> 0 Then sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1) End If ' MP3-Datei öffnen mciSendString "open " & sFile & _ " type MPEGVideo alias myMP3", 0, 0, 0 End Sub ' MP3-Datei schließen Private Sub CloseMP3() mciSendString "close myMP3", 0, 0, 0 End Sub ' Kommando senden und "Ergebnis" zurückgeben Private Function SendCommand(ByVal sCmd As String) As Long Dim lResult As Long Dim sReturn As String sReturn = Space$(256) lResult = mciSendString(sCmd, sReturn, Len(sReturn), 0&) SendCommand = Val(sReturn) End Function Private Sub cmdPlay_Click() Dim sFile As String ' MP3-Datei, die abgespielt werden soll sFile = "c:\temp\IrgendEine.mp3" ' MP3 öffnen OpenMP3 sFile ' Abpsielvorgang starten SendCommand "play myMP3 from 0" ' Timer aktivieren Timer1.Enabled = True End Sub Private Sub cmdStop_Click() ' Stoppen und schließen Timer1.Enabled = False CloseMP3 End Sub Private Sub Timer1_Timer() ' Status abfragen und ggf. Abspielvorgang von ' vorne beginnen Dim lCurPos As Long Dim lLength As Long ' aktuelle Position lCurPos = SendCommand("status myMP3 position") ' Gesamtspielzeit lLength = SendCommand("status myMP3 length") ' Prüfen, ob am Ende angelangt und ggf. ' Abspielvorgang von vorne beginnen If lCurPos >= lLength Then SendCommand ("play myMP3 from 0") End If End Sub Dieser Tipp wurde bereits 24.376 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Tipp des Monats September 2024 Dieter Otter Übergabeparameter: String oder Array? Mit der IsArray-Funktion lässt sich prüfen, ob es sich bei einem Übergabeparameter an eine Prozedur um ein Array oder einer "einfachen" Variable handelt. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |