Hallo,
ich habe meinen PC von Windows 10 auf Windows 11 hochgerüstet und dabei von Visual Studio 19 auf Visual Studio 22 gewechselt.
Das hat weitgehend problemlos funktioniert ... leider klappt eine Routine nicht mehr, mit der ich bisher die (zeitliche) Länge von .mp4 files ausgelesen haben. Ich habe ein Testprojekt zum Reproduzieren des Fehlers erstellt:
Der Befehl in Zeile 63 zum Auslesen der Länge funktioniert nicht mehr, weil er jetzt vbNullChar zurückliefert (wie man am Dateianhang erkennen kann).
Weiß jemand wie man das beheben kann? Alternativ würde es mir auch helfen, wenn mir jemand sagen könnte, wie ich unter Windows 11 die Spieldauer einer .mp4 Datei ermitteln kann.
LG
Peter
*Topic verschoben*
ich habe meinen PC von Windows 10 auf Windows 11 hochgerüstet und dabei von Visual Studio 19 auf Visual Studio 22 gewechselt.
Das hat weitgehend problemlos funktioniert ... leider klappt eine Routine nicht mehr, mit der ich bisher die (zeitliche) Länge von .mp4 files ausgelesen haben. Ich habe ein Testprojekt zum Reproduzieren des Fehlers erstellt:
VB.NET-Quellcode
- Private Function GetMP3Length(ByVal strFileName As String) As Long
- If Not File.Exists(strFileName) Then
- MsgBoxDark.Show("GetMP3Length " & NewLine2 & strFileName & NewLine2 & " - 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)
- Try
- ' Da die mciSendString Funktion mit langen Dateinamen
- ' nicht korrekt arbeitet, muss zuvor der kurze
- ' 8.3 Dateiname der MP3-Datei ermittelt werden.
- lRet = GetShortPathName(strFileName, strBuffer, strBuffer.Length)
- Catch ex As Exception
- MsgBoxDark.Show("GetShortPathName failed " & NewLine2 &
- "Filename not changed" & NewLine2 &
- "File: " & strFileName & NewLine2 &
- 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
- MsgBoxDark.Show("MP open failed" & NewLine2 &
- "Length=0 substituted" & NewLine2 &
- "File: " & strFileName & NewLine2 &
- ex.Message)
- Debug.Print(ex.Message)
- Return 0
- End Try
- Try
- ' Länge der Datei in Millisekunden auslesen
- mciSendString("status mp3audio length", sReturn, Len(sReturn), 0)
- Catch ex As Exception
- MsgBoxDark.Show("MP getlength failed" & NewLine2 &
- "Length=0 substituted" & NewLine2 &
- ex.Message)
- Debug.Print(ex.Message)
- Return 0
- End Try
- ' MP3-Datei schliessen
- mciSendString("close mp3audio", "0", 0, 0)
- Try
- GetMP3Length = CLng(Convert.ToDouble(sReturn.Trim))
- Catch ex As Exception
- Debug.Print(sReturn & " - " & ex.Message)
- GetMP3Length = 0
- End Try
- 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
Der Befehl in Zeile 63 zum Auslesen der Länge funktioniert nicht mehr, weil er jetzt vbNullChar zurückliefert (wie man am Dateianhang erkennen kann).
Weiß jemand wie man das beheben kann? Alternativ würde es mir auch helfen, wenn mir jemand sagen könnte, wie ich unter Windows 11 die Spieldauer einer .mp4 Datei ermitteln kann.
LG
Peter
*Topic verschoben*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()