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.461 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. |
sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! 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. |