Hi,
ich habe eine Anwendung, bei der ich die Spieldauer von MP3/MP4 Dateien ermitteln muss.
Die Aufgabe hatte ich wie folgt gelöst:
Diese Lösung funktioniert jetzt leider nicht mehr. Ich erhalte folgenden Laufzeitfehler beim Öffnen der Datei:
Irgend etwas hat sich mit der DLL geändert. Weiß jemand, wie ich das Dingens wieder zum Laufen bringe.
LG
Peter
*Topic verschoben*
ich habe eine Anwendung, bei der ich die Spieldauer von MP3/MP4 Dateien ermitteln muss.
Die Aufgabe hatte ich wie folgt gelöst:
VB.NET-Quellcode
- Imports System.IO
- Public Class Form1
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim myFile As String = "... my Source ..."
- Dim myLength = GetMP3Length(myFile)
- Debug.Print("mylength=" & myLength.ToString)
- End Sub
- Private Function GetMP3Length(ByVal strFileName As String) As Long
- If Not File.Exists(strFileName) Then
- MessageBox.Show("GetMP3Length " & vbNewLine & strFileName & vbNewLine &
- " - file does not exists.")
- Return 0
- End If
- Dim strBuffer As New String(" "c, 255)
- Dim lRet As Long
- Dim sReturn As New String(" "c, 255)
- Dim myNullchar As Char = Convert.ToChar(0)
- ' Da die mciSendString Funktion mit langen Dateinamen
- ' nicht korrekt arbeitet, muss zuvor der kurze
- ' 8.3 Dateiname der MP3-Datei ermittelt werden.
- Try
- lRet = GetShortPathName(strFileName, strBuffer, strBuffer.Length)
- Catch ex As Exception
- MessageBox.Show("GetShortPathName failed " & vbNewLine &
- "Filename not changed" & vbNewLine &
- "File: " & strFileName & vbNewLine &
- ex.Message)
- End Try
- If lRet <> 0 Then
- strFileName = strBuffer.Substring(0, strBuffer.IndexOf(myNullchar))
- Else
- strFileName = strFileName
- End If
- Try
- ' MP3-Datei öffnen
- mciSendString("open " & """" & strFileName & """" &
- " type MPEGVideo alias mp3audio", "0", 0, 0)
- Catch ex As Exception
- MessageBox.Show("MP open failed " & vbNewLine &
- "Length=0 substituted" & vbNewLine &
- "File: " & strFileName & vbNewLine &
- ex.Message)
- Debug.Print(ex.Message)
- Return 0
- End Try
- ' Länge der Datei in Millisekunden auslesen
- lRet = mciSendString("status mp3audio length",
- sReturn, Len(sReturn), 0&)
- ' MP3-Datei schliessen
- mciSendString("close mp3audio", "0", 0, 0)
- GetMP3Length = CLng(Convert.ToDouble(sReturn.Trim))
- End Function
- Private Declare Function mciSendString Lib " winmm.dll" Alias " mciSendStringA" (ByVal lpstrCommand As String,
- ByVal lpstrReturnString As String,
- ByVal uReturnLength As Integer,
- ByVal hwndCallback As Integer) As Integer
- Private Declare Function GetShortPathName Lib " kernel32" Alias " GetShortPathNameA" (ByVal lpszLongPath As String,
- ByVal lpszShortPath As String,
- ByVal cchBuffer As Integer) As Integer
- End Class
Diese Lösung funktioniert jetzt leider nicht mehr. Ich erhalte folgenden Laufzeitfehler beim Öffnen der Datei:
Irgend etwas hat sich mit der DLL geändert. Weiß jemand, wie ich das Dingens wieder zum Laufen bringe.
LG
Peter
*Topic verschoben*
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Marcus Gräfe“ ()