Aider moi svp

Signaler
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008
-
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008
-
j'ai fai un lecteur multimedia qui lit tout les format son et video mais je me sert
dela nouvelle version de media player et j'ai quelque grosses dificulte
a enchaine les titres de mes musiques
j'utilise donc un timer avec ce code
Private Sub Timer_Timer()


LblTpsMedia.Caption = Convert_Time(media.Controls.CurrentPosition) & "/" & Convert_Time(media.currentMedia.Duration)
'If media.Controls.media.CurrentPosition>= media.currentMedia.DurationThen

' End If

On Error Resume Next
LstMediaVisible.Selected(LstMediaVisible.ListIndex) = False
LstMediaVisible.ListIndex = LstMediaVisible.ListIndex + 1
If Err.Number = 380 Then 'Dernière chanson de la playlist
LstMediaVisible.ListIndex = 0
End If
LstMediaVisible.Selected(LstMediaVisible.ListIndex) = True
CmdJouer.Value = True


End Sub
et le souci est que les enchainement marche mais que pour la dure du timer(10s)
alors que mormalent ca devrait etre etre a la fin du titre car j'utilise
cette phrase de code :
If media.Controls.media.CurrentPosition>= media.currentMedia.DurationThen
si quelqu'un pouvait m'aider ca serai tres sympa merci d'avance

20 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
Private Sub Timer_Timer()
LblTpsMedia.Caption = Convert_Time(media.Controls.CurrentPosition) & "/" & Convert_Time(media.currentMedia.Duration)
If media.Controls.media.CurrentPosition < media.currentMedia.Duration Then Exit Sub

' LstMediaVisible.Selected(LstMediaVisible.ListIndex) = False
If LstMediaVisible.ListIndex + 1 < LstMediaVisible.ListCount Then
LstMediaVisible.ListIndex = LstMediaVisible.ListIndex + 1
Else
LstMediaVisible.ListIndex = 0
End If
LstMediaVisible.Selected(LstMediaVisible.ListIndex) = True
CmdJouer.Value = True
End Sub

Daniel
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

ca me dit que lobet ne gere pas cette propriete ou cette methode
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

excuse c'est parsqu'il y aune erreur
(2 fois media. 5eme ligne)
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

je suis desole mais sa ne marche pas soit sa lit j'usqua la fin est sa s'arrete ou alors
si je modifie
If media.Controls.media.CurrentPosition < media.currentMedia.Duration Then Exit Sub

en sa

If media.Controls.media.CurrentPosition <= media.currentMedia.Duration Then Exit Sub

sa me selectionne tout les titre un par un en gardant le precedant en selection est sa defile
par raport a l'interval du timer (100ms)
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
c'est parce que j'ai recopié la ligne bêtement sans savoir ce que c'était ...

au fait cette ligne doit être inutile aussi, si t'es pas en Multiselect, le fait de modifier Listindex sélectionne la Ligne en même temps:
' LstMediaVisible.Selected(LstMediaVisible.ListIndex) = True

Daniel
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
t'es sûr que ta méthode marche et qu'elle donne bien la position courante de la lecture en cours, parce que là je connais pas ?
media.Controls.media.CurrentPosition

Daniel
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

media.Controls.media.CurrentPosition
la il y a un .media en trop
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

si non si tu as une autre methode je veu bien car la j'ai tester encore autrement
mais sa ne marche toujours pas
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
cherche la bonne syntaxe
pourquoi pas directement: media.CurrentPosition

Daniel
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

ca ne marche pas avec le media 9
car le code me servai pour la version 4 et marchai mais la avec la nouvelle
version c'est un peut plus complique et c'est pour ca que je galere grave
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
d'après les exemples que j'ai vu, essayes ça:

If media.CurrentPosition < media.Duration Then Exit Sub

ou ça:

If Media.PlayState <> 0 then Exit Sub

Daniel
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

si tu arrive a me sortir de cette "merde" si sa t'interesse je te passerai mon lecteur
une foi terminer tu vera si j'arrive a ce que je veu il est tres pratique est permer de lire tout les format
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
pour le PlayState c'est pas impossible mais faudrait connaître les différentes valeurs ...

sinon il faut positionner la durée au moment du play:
durée =
media.currentMedia.duration

et ensuite tester dans le Timer:
If media.Controls.currentPosition < durée then Exit Sub

mais ce ne sera pas suffisant, parce que c'est pas sûr que la currentPosition atteigne la valeur maxi, ceci dépendant de l'interval du Timer, et on se retrouve alors avec une currentPosition égale à zéro, il faut tester avec une tolérance de quelques secondes, mais attention lorsque la liste est vide risque de plantage ...
If media.Controls.currentPosition > 0 and durée - media.Controls.currentPosition < 10 then Exit Sub

Daniel
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

Private Sub LstMediaVisible_DblClick() 'un dblclick sur le titre selectionner permet sa lecture
CmdJouer.Value = True
End Sub
Private Sub Player_PlayStateChange(ByVal NewState As Long)
If (NewState = 1) Then
File1.ListIndex = fiel1.ListIndex + 1
Player.Controls.Play
End If
End Sub
Private Sub File1_Click() 'selection du fichier unclick le met dans la playlist
CmdOK.Value = True
End Sub
Private Sub Form_Load()
Chargement_Preferences
File1.Pattern = "*.mp3;*.wav;*.wma;*.avi;*.mpg;*.mpe;*.mpeg;*.divx;*.cda;*.vob"
End Sub
Public Function Convert_Time(v_DureeSeconde As Integer) As String
Dim v_sec As Integer
Dim v_min As Integer
v_min = Split(v_DureeSeconde / 60, ",")(0)
v_sec = v_DureeSeconde - (v_min * 60)
Convert_Time = v_min & ":" & v_sec
End Function
Public Function Suppr_Extension(v_chaine As String) As String
Suppr_Extension = Replace(v_chaine, Right(v_chaine, 4), "")
End Function
Public Function Suppr_Chemin(v_chaine As String) As String
Dim v_chemin As String
Dim v_trouve As Integer
ReDim TabNomMedia(Len(v_chaine))
j = 1
v_trouve = 0
Do
If Right(v_chaine, j) = ("" & v_chemin) Then Exit Do
v_chemin = Right(v_chaine, j)
j = j + 1
Loop
Suppr_Chemin = v_chemin
End Function
End Sub
Private Sub CmdJouer_Click() 'un click permet la lecture de la musique
Timer.Enabled = True
durée = media.currentMedia.Duration
LstMedia.ListIndex = LstMediaVisible.ListIndex
libelléfichier = (LstMedia.List(LstMediaVisible.ListIndex))
media.URL = libelléfichier If LCase(Right(LstMedia, 4)) ".avi" Or LCase(Right(LstMedia, 4)) ".mpg" Or LCase(Right(LstMedia, 4)) = ".mpe" Or LCase(Right(LstMedia, 5)) = ".mpeg" Or LCase(Right(LstMedia, 4)) = ".divx" Or LCase(Right(LstMedia, 5)) = ".cda" Then
Timer1.Enabled = True
End If
Form1.Caption = LstMediaVisible
NomMedia = Taille_Defilement_Text(LstMediaVisible)
TimerDefilement.Enabled = True
NbPassage = 0
i = 0
k = 0
'
End Sub
Private Sub LstMediaVisible_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then
CmdClearSelect.Value = True
End If
If KeyCode = vbKeyR Then
CmdRetour.Value = True
End If
If KeyCode = vbKeyA Then
CmdAvance.Value = True
End If
End Sub


Private Sub Timer_Timer() ' permet d'enchainner les titres
durée = media.currentMedia.Duration
If media.Controls.CurrentPosition > 0 And durée - media.Controls.CurrentPosition < 10 Then Exit Sub
If media.PlayState <> 0 Then Exit Sub
If media.Controls.CurrentPosition < media.currentMedia.Duration Then Exit Sub
LstMediaVisible.Selected(LstMediaVisible.ListIndex) = False
If LstMediaVisible.ListIndex + 1 < LstMediaVisible.ListCount Then
LstMediaVisible.ListIndex = LstMediaVisible.ListIndex + 1
Else
LstMediaVisible.ListIndex = 0
End If
CmdJouer.Value = True
End Sub


Private Sub cmdOK_Click() 'envoi les titre du file1 a la paylist
On Error Resume Next
For i = 0 To File1.ListCount - 1
If File1.Selected(i) = True Then
CheminMedia = Dir1.Path & "" & File1.List(i)
LstMedia.AddItem CheminMedia
LstMediaVisible.AddItem Suppr_Chemin(Suppr_Extension(CheminMedia))
File1.Selected(i) = False
End If
Next i
LblNbFichier.Caption = LstMediaVisible.ListCount & " Fichier(s)"
End Sub
Private Sub Dir1_Change()
File1.FileName = Dir1.Path
End Sub
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
dans CmdJouer_Click()

' protection si la Liste est vide
If LstMediaVisible.ListCount = 0 Then Exit Sub
LstMedia.ListIndex = LstMediaVisible.ListIndex
libelléfichier = (LstMedia.List(LstMediaVisible.ListIndex))
media.URL = libelléfichier
' on ne peut pas avoir la durée s'il n'y a pas de lecture en cours
' et en plus il faut attendre que le fichier soit pris en compte
While media.playState = 9: DoEvents: Wend
durée = media.currentMedia.duration
Timer.Enabled = True

Private Sub Timer_Timer()
' si lecture en cours on sort (finalement durée ne sert plus)
If media.Controls.currentPosition > 0 Then Exit Sub

' protection si liste vide
If LstMediaVisible.ListCount = 0 Then
durée = 0
Timer.Enabled = False
Exit Sub
End If
' passage à l'index suivant
If LstMediaVisible.ListIndex + 1 < LstMediaVisible.ListCount Then
LstMediaVisible.ListIndex = LstMediaVisible.ListIndex + 1
Else
LstMediaVisible.ListIndex = 0
End If
CmdJouer.Value = True

End Sub

Daniel
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

c'est cool ca a laire de marcher je vais tester sa plus profondement

je te remerci et je te dirai quand j'aurai fini en esperant que sa marche une foi compile
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

en faite il y aun petit probleme je suis desole mais sa ne marche pas tres bien et malgre enple essai je n'arrive pas au resultat car quand je lance le lecteur il lit et enchaine les musique mais il lit celle qui precede la selection et en plus a chaque debut il charge la musique 2s et recharge la music pour la lire se qui fait un decalage
sinon j'ai peut etre trouver autre chose mais j'ai encore un souci c'est que lors de l'enchainemnt il saute un titre se qui fait que sa enchaine mais on a que un titre sur 2 de lu
voila mon code
et je n'utilse pas de timer
Private Sub media_PlayStateChange(ByVal NewState As Long)


If (NewState = 1) Then
file1.ListIndex = file1.ListIndex + 1
media.Controls.Play
libelléfichier = dir1.Path & "" & file1.List(file1.ListIndex)
media.URL = libelléfichier
End If
End Sub
bon c'est qu'un essai car je n'arrive pas ale faire fonctionner avec la playlist
merci
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
<STRIKE>media.Controls.Play
</STRIKE>enlève ça déjà parce que ça relance la lecture précédente et le URL qui suit immédiatement après redéclanche une deuxième lecture

Daniel
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

nan ca change rien j'avais deja essayer merci quand meme
Messages postés
119
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
9 avril 2008

je pense quand meme que le code que tu ma donner et mieu ily ajuste se petit probleme de decalage dans la selection