Wenn Sie unseren aktuellen Workshop aufmerksam durchgearbeitet haben, sollte Ihnen nachfolgender Tipp zum Auslesen der Länge (Spieldauer) einer MP3-Datei gar nicht mal so neu vorkommen Um die Länge einer MP3-Datei auszulesen muss man nämlich nicht unbedingt auf zusätzlich Controls wie z.B. dem Windows Media Player zurückgreifen. Es geht auch mit Hilfe der Windows-API. Der Code ist klein und nicht sonderlich schwer zu verstehen. Er besteht lediglich aus zwei API-Deklarationen und einer Funktion, die die Länge der übergebenen MP3-Datei in Millisekunden zurück liefert. Hier nun der Code: ' 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 ' Ermittelt die Länge einer MP3-Datei ' in Millisekunden Private Function GetMP3Length( _ ByVal strFileName As String) As Long Dim strBuffer As String Dim lRet 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. strBuffer = Space$(255) lRet = GetShortPathName(strFileName, strBuffer, Len(strBuffer)) If lRet <> 0 Then strFileName = Left$(strBuffer, InStr(strBuffer, vbNullChar) - 1) End If ' MP3-Datei öffnen mciSendString "open " & strFileName & _ " type MPEGVideo alias mp3audio", 0, 0, 0 ' Länge der Datei in Millisekunden auslesen sReturn = Space$(256) lRet = mciSendString("status mp3audio length", _ sReturn, Len(sReturn), 0&) ' MP3-Datei schliessen mciSendString "close mp3audio", 0, 0, 0 GetMP3Length = Val(sReturn) End Function Für das Umwandeln der Zeitrückgabe (Millisekunden) in ein besser lesbares Format (Minuten:Sekunden) können Sie zusätzlich nachfolgende Funktion einsetzen: ' Millisekunden in lesbares Zeitformat umwandeln Private Function FormatTime(ByVal lMSec As Long) _ As String Dim iMin As Integer Dim iSec As Integer iSec = Int(lMSec / 1000) iMin = Int(iSec / 60) iSec = iSec - (iMin * 60) FormatTime = Format$(iMin, "00") & ":" & _ Format$(iSec, "00") End Function Dieser Tipp wurde bereits 26.164 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 April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 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. |