I. Introduction▲
Tous les exemples présentés dans ce document ont été testés à partir de Windows Media Player 10.0
Les méthodes et propriétés sont identiques pour gérer les fichiers audio ou video.
Les termes employés dans ce document:
Une séquence: est un fichier audio ou une video spécifique
Une PlayList: est un ensemble de séquences.
Pour plus d'informations, consultez la documentation MSDN
II. Gérer une séquence ▲
Vous devez préalablement créer une forme dans votre projet et y ajouter un objet Windows Media Player, nommé WindowsMediaPlayer1
II-A. Définir et lire un fichier▲
'Définit et lit un fichier
WindowsMediaPlayer1.URL = "C:\leFichier.mp3"
Cette première procédure charge le fichier et joue automatiquement la séquence.
La propriété autoStart a une valeur True par défaut.
Si vous souhaitez uniquement charger le fichier sans démarrer la lecture, utilisez:
'Désactive la lecture automatique
WindowsMediaPlayer1.settings.autoStart = False
'Définit le fichier
WindowsMediaPlayer1.URL = "C:\leFichier.mp3"Ensuite, pour lire le fichier, utilisez:
WindowsMediaPlayer1.Controls.Play
Il est possible de spécifier une position précise
dans la séquence pour débuter la lecture.
Private Sub CommandButton1_Click()
'Chargement fichier & lecture
WindowsMediaPlayer1.URL = "C:\maMusique.mp3"
'Positionnement à la 3eme minute
WindowsMediaPlayer1.Controls.currentPosition = 180 'secondes
End SubII-B. Arrêter la lecture▲
WindowsMediaPlayer1.Controls.StopII-C. Afficher la durée de la séquence en cours▲
Private Sub CommandButton1_Click()
'Lance la lecture du fichier
WindowsMediaPlayer1.URL = "C:\leFichier.mp3"
'La récupération d'informations sur une séquence peut se faire uniquement
'lorsque le statut de chargement "Transitioning" est atteint
'9 = statut "Préparation nouvelle séquence" (constante wmppsTransitioning)
While WindowsMediaPlayer1.playState = 9: DoEvents: Wend
'Affiche la durée de la séquence au format hh:mm:ss
MsgBox WindowsMediaPlayer1.currentMedia.durationString
End Sub
Remarque:
La propriété Duration renvoie la durée en secondes
'Affiche la durée de la séquence en secondes
MsgBox WindowsMediaPlayer1.currentMedia.duration
Pour afficher la position de la lecture en cours au format hh:mm:ss, utilisez:
MsgBox WindowsMediaPlayer1.Controls.currentPositionStringII-D. Effectuer une pause▲
WindowsMediaPlayer1.Controls.Pause
Et pour relancer la séquence:
WindowsMediaPlayer1.Controls.PlayII-E. Vérifier si une action peut etre appliquée▲
La propriété isAvailable permet de contôler si une action peut être effectuée,
par exemple vérifier si la séquence peut être mise en Pause.
'vérifie si l'action "pause" peut etre appliquée (Renvoie Vrai ou Faux)
MsgBox WindowsMediaPlayer1.Controls.isAvailable("Pause")D'autres actions contrôlables:
- Stop
- Play
- Pause
- FastForward
- FastReverse
- Next
- Previous
- CurrentItem
- CurrentPosition
II-F. Afficher le statut de Windows Media Player▲
Première solution:
MsgBox WindowsMediaPlayer1.Status
Une deuxième solution:
Select Case WindowsMediaPlayer1.playState
Case 0: MsgBox "Undefined"
Case 1: MsgBox "Stopped"
Case 2: MsgBox "Paused"
Case 3: MsgBox "Playing"
Case 4: MsgBox "ScanForward" 'Avance rapide
Case 5: MsgBox "ScanReverse" 'Retour rapide
Case 6: MsgBox "Buffering"
Case 7: MsgBox "Waiting"
Case 8: MsgBox "MediaEnded"
Case 9: MsgBox "Transitioning" 'Préparation nouvelle séquence
Case 10: MsgBox "Ready"
Case 11: MsgBox "Reconnecting"
End SelectII-G. Désactiver et Réactiver le son▲
'Désactive le son
WindowsMediaPlayer1.settings.mute = True'Active le son
WindowsMediaPlayer1.settings.mute = FalseII-H. Modifier le volume sonore ▲
Attribuez une valeur entre 0 et 100 (%) pour modifier la position du curseur de réglage sonore.
'Modifie le volume sonore
WindowsMediaPlayer1.settings.volume = 50II-I. Effectuer une avance rapide▲
'Effectue une avance rapide
If WindowsMediaPlayer1.Controls.isAvailable("FastForward") Then _
WindowsMediaPlayer1.Controls.fastForward
Pour revenir en lecture normale
'pour revenir à la lecture normale
WindowsMediaPlayer1.Controls.PlayII-J. Lire la même séquence en boucle▲
WindowsMediaPlayer1.Controls.Play
WindowsMediaPlayer1.settings.setMode "loop", True
Pour vérifier le statut, utilisez:
MsgBox WindowsMediaPlayer1.settings.getMode("loop")II-K. Afficher Windows Media Player en mode plein écran▲
Windows Media player doit avoir le statut "Lecture en cours" pour utiliser cette option.
Vous pouvez identifier le statut du lecteur en utilisant l'évenement PlayStateChange.
Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If NewState = 3 Then _
WindowsMediaPlayer1.fullScreen = True
End SubII-L. Afficher des informations sur la séquence en cours▲
Remarque:
La récupération d'informations sur une séquence peut se faire uniquement
lorsque le statut de chargement "Transitioning" est atteint.
MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("Name")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("author")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("Title")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("Album")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("copyright")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("Artist")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("Genre")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("Bitrate") / 1000 & " kbps"
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("Abstract")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("bitRate")
'MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("duration")
Une autre solution qui liste toutes les informations:
Private Sub CommandButton1_Click()
Dim Resultat As String
Dim i As Integer
Dim Cm As WMPLib.IWMPMedia
Set Cm = WindowsMediaPlayer1.currentMedia
'boucle sur les attributs
For i = 0 To Cm.attributeCount - 1
If Cm.getItemInfo(Cm.getAttributeName(i)) <> "" Then _
Resultat = Resultat & Cm.getAttributeName(i) & " : " & _
Cm.getItemInfo(Cm.getAttributeName(i)) & vbLf
Next
MsgBox Resultat
End SubII-M. Modifier les informations d'une séquence▲
Par exemple pour modifier le titre de la séquence en cours, utilisez:
'Modifie le titre de la séquence en cours
WindowsMediaPlayer1.currentMedia.setItemInfo "title", "Nouveau_Titre"
'Vérifie le contenu du titre
MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("title")III. Gérer une PlayList▲
Vous devez préalablement créer une forme dans votre projet et y ajouter un objet Windows Media Player nommé WindowsMediaPlayer1
III-A. Créer une PlayList▲
Cet exemple crée une PlayList composée de 3 séquences:
Dim Xwmp As IWMPMedia
'nettoye la Playlist en cours avant de réalimenter la liste
WindowsMediaPlayer1.currentPlaylist.Clear
Set Xwmp = WindowsMediaPlayer1.newMedia("C:\essai.mid")
WindowsMediaPlayer1.currentPlaylist.insertItem 0, Xwmp
Set Xwmp = WindowsMediaPlayer1.newMedia("C:\maMusique.mp3")
WindowsMediaPlayer1.currentPlaylist.insertItem 1, Xwmp
Set Xwmp = WindowsMediaPlayer1.newMedia("C:\Jumbalaya.mid")
WindowsMediaPlayer1.currentPlaylist.insertItem 2, Xwmp
'Lecture
WindowsMediaPlayer1.Controls.PlayIII-B. Passer à la séquence suivante ou précédente▲
'Permet d'accéder à la séquence suivante
WindowsMediaPlayer1.Controls.Next
Remarque:
Le premier item de la PlayList sera réactivé si vous êtes arrivé en fin de liste.
'Permet d'accéder à la séquence précédente
WindowsMediaPlayer1.Controls.Previous
Remarque:
le dernier item de laPlayList sera activé si vous êtes en début de liste.
III-C. Supprimer une séquence dans la PlayList▲
Exemple pour supprimer la deuxieme séquence. (L'index du premier élément = 0)
Dim It As Object
Set It = WindowsMediaPlayer1.currentPlaylist.Item(1)
WindowsMediaPlayer1.currentPlaylist.RemoveItem ItIII-D. Lire une séquence spécifique de la PlayList▲
Exemple pour lire la 3eme séquence:
Dim It As Object
Set It = WindowsMediaPlayer1.currentPlaylist.Item(2)
WindowsMediaPlayer1.Controls.playItem ItIII-E. Lister le nom des séquences contenues dans la PlayList▲
Sub Lister_NomDesSequences_DansLaPlayList()
Dim Pl As IWMPPlaylist
Dim j As Integer, i As Integer
'Définit la playlist active
Set Pl = WindowsMediaPlayer1.currentPlaylist
'compte le nombre de séquences dans la playList
j = Pl.Count
If Not j > 0 Then MsgBox "il n'y a pas d'éléments dans la playlist"
'Boucle sur les séquences
For i = 0 To j - 1
MsgBox Pl.Item(i).Name
'
'pour afficher la source :
'MsgBox Pl.Item(i).sourceURL
'
Next i
End SubIII-F. Ajouter une séquence dans la PlayList▲
La séquence est automatiquement placée à la suite des items existants.
Dim Ad As IWMPMedia
Set Ad = WindowsMediaPlayer1.newMedia("C:\couldntStandTheWeather.mp3")
WindowsMediaPlayer1.currentPlaylist.appendItem AdIII-G. Retrouver l'index de la séquence active▲
Dim Pl As IWMPPlaylist
Dim j As Integer, i As Integer
Dim Cible As String
Cible = WindowsMediaPlayer1.Controls.currentItem.Name
Set Pl = WindowsMediaPlayer1.currentPlaylist
j = Pl.Count
If Not j > 0 Then MsgBox "il n'y a pas d'éléments dans la playlist"
For i = 0 To j - 1
If Cible = Pl.Item(i).Name Then
MsgBox "L'index de la séquence " & Cible & " est : " & i
Exit For
End If
Next i
III-H. Compter le nombre de séquences dans la PlayList▲
WindowsMediaPlayer1.currentPlaylist.CountIV. Gérer les CD Audio▲
Vous devez préalablement créer une forme dans votre projet et y ajouter un objet Windows Media Player nommé WindowsMediaPlayer1
L'exemple suivant montre comment définir le contenu d'un CD audio (Tracks) en tant que PlayList.
Private Sub CommandButton1_Click()
Dim Lecteur As wmplib.IWMPCdrom
Dim It As wmplib.IWMPMedia
'Définit le lecteur contenant le CD
'Item(0) Correspond au 1er lecteur du PC
Set Lecteur = WindowsMediaPlayer1.cdromCollection.Item(0)
'Définit le contenu du lecteur en tant que PlayList
WindowsMediaPlayer1.currentPlaylist = Lecteur.Playlist
'----
'à partir de ce point, la lecture est lancée automatiquement.
'----
'Les lignes suivantes montrent simplement comment atteindre
'une séquence spécifique.
'----
'Permet de vérifier si WMP est prêt
If WindowsMediaPlayer1.playState = 0 Then
MsgBox "Opération annulée."
Exit Sub
End If
'Active la 3eme séquence du CD pour la lecture
Set It = WindowsMediaPlayer1.currentPlaylist.Item(2)
WindowsMediaPlayer1.Controls.playItem It
End Sub
Les méthodes et propriétés sont identiques aux exemples présentés dans les chapitres précédents.
V. Utiliser la librairie sans objet support▲
Pour les fichiers musicaux, il est possible de lancer une séquence ou de gérer une playlist
sans ajouter d'objet dans votre projet,
en utilisant directement la bibliothèque WindowsMediaPlayer (wmp.dll).
Pour activer la référence en VBA:
Dans l'éditeur de macros,
Menu Outils
References
Cochez la ligne "Windows Media Player"
Cliquez sur OK pour valider
Pour activer la référence en VB:
Menu Projet
Références
Cochez la ligne "Windows Media Player" (wmp.dll)
Cliquez sur OK pour valider
Option Explicit
Dim Wmp As WindowsMediaPlayer
Sub jouerWindowsMediaPlayer()
Set Wmp = CreateObject("WMPlayer.OCX.7")
Wmp.URL = "C:\leFichier.mp3"
Wmp.Controls.Play
End Sub
et pour arrêter la séquence
Sub arreterWondowsMediaPlayer()
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.stop
End Sub
Les méthodes et propriétés sont identiques aux exemples présentés dans les chapitres précédents.
VI. Divers▲
VI-A. Lister les lecteurs de CD et de DVD installés▲
La référence WindowsMediaPlayer (wmp.dll) doit être préalablement activée.
Sub listeLecteurs_CD_DVD()
Dim Wmp As WindowsMediaPlayer
Dim nombreLecteurs As Integer, i As Integer
Dim PCd As IWMPCdrom
Set Wmp = CreateObject("WMPlayer.OCX.7")
nombreLecteurs = Wmp.cdromCollection.Count
If Not nombreLecteurs > 0 Then _
MsgBox "il n'y a pas de lecteur de CD ou DVD installés ."
For i = 0 To nombreLecteurs - 1
Set PCd = Wmp.cdromCollection.Item(i)
MsgBox PCd.driveSpecifier
Next i
End SubVI-B. Ouvrir le lecteur de CD / DVD▲
Sub ouvrirLecteur()
Dim Wmp As Object, Lecteur As Object
Set Wmp = CreateObject("WMPlayer.OCX.7")
'L'index 0 est correspond au 1er lecteur du poste
Set Lecteur = Wmp.cdromCollection.Item(0)
Lecteur.eject
End SubVI-C. Lancer le lecteur Windows Media Player pour lire un fichier▲
Sub lancerUneVideo()
'Necessite d'activer la référence Windows Media Player
Dim Wmp As WindowsMediaPlayer
Set Wmp = CreateObject("WMPlayer.OCX.7")
Wmp.openPlayer "C:\monFilm.mpg"
End Sub



