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.117 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! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |