Grüße ich versuche mit hilfe der API functionen die ich hier gefunden habe einen player aus zu statten der M3U listen abspielt im dauer loop mit einer zusätzlichen Shuffle Function. Ich habe vor einen Player zu bauen der per Tasten druck 3 playlisten abspielt
z.b.
Music.m3u
FX1.m3u
FX2.m3u
Das ist mein bisheriger Code
es währe schön wenn mir jemand damit weiterhelfen könnte.
Option Explicit
' zunächst die benötigte API-Deklaration
Private Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" (ByVal lpszCommand As String, _
ByVal lpszReturnString As String, _
ByVal cchReturnLength 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
Public Function StopAll()
tmMusicF1.Enabled = False
TmFx1F1.Enabled = False
TmFx2F1.Enabled = False
MP3_Stop "MusicF1"
MP3_Stop "Fx1F1"
MP3_Stop "Fx2F1"
End Function
Public Function fGetM3u(ByVal sM3uFile As String, _
Optional ByVal bOnlyIfExist As Boolean = False) As Variant
....
....
....
End Function
' MP3-Datei abspielen
Public Function MP3_Play(ByVal sFile As String, _
ByVal sAlias As String) As Boolean
Dim bResult As Boolean
' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
' wie Leerzeichen Probleme machen
Dim sBuffer As String
Dim lResult As Long
sBuffer = Space$(255)
lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
If lResult <> 0 Then
sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
' MCI öffnen
lResult = mciSendString("open " & sFile & _
" type MPEGVideo alias " & sAlias, 0, 0, 0)
If lResult = 0 Then
' MP3 abspielen
If mciSendString("play " & sAlias & _
" from 0", 0, 0, 0) = 0 Then
bResult = True
End If
End If
End If
MP3_Play = bResult
End Function
' 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
' Wiedergabe stoppen und MCI schließen
Public Sub MP3_Stop(ByVal sAlias As String)
mciSendString "stop " & sAlias, 0, 0, 0
mciSendString "close " & sAlias, 0, 0, 0
End Sub
Private Sub Command1_Click()
' MP3 abspielen
If chkshuffelmusicf1.Value = 1 Then
lstmusicF1.ListIndex = Rnd * lstmusicF1.ListCount
Else
lstmusicF1.ListIndex = 0
End If
Dim intervals As Double
intervals = GetMP3Length(lstmusicF1.Text)
' tmMusicF1.interval = intervals
tmMusicF1.Enabled = True
End Sub
Private Sub Command2_Click()
' MP3-Wiedergabe stoppen
StopAll
End Sub |