Utiliser Windows Media Player en VB et VBA
Date de publication : 09.01.2007
Par
SilkyRoad (silkyroad.developpez.com)
Ce document présente l'utilisation de Windows Media Player en VB et VBA.
La bibliothèque WMP permet de lire des fichiers audio et vidéo, de gérer des PlayList,
mais aussi de récupérer
des informations sur les lecteurs multimédias de votre poste.
I. Introduction
II. Gérer une séquence
II-A. Définir et lire un fichier
II-B. Arrêter la lecture
II-C. Afficher la durée de la séquence en cours
II-D. Effectuer une pause
II-E. Vérifier si une action peut etre appliquée
II-F. Afficher le statut de Windows Media Player
II-G. Désactiver et Réactiver le son
II-H. Modifier le volume sonore
II-I. Effectuer une avance rapide
II-J. Lire la même séquence en boucle
II-K. Afficher Windows Media Player en mode plein écran
II-L. Afficher des informations sur la séquence en cours
II-M. Modifier les informations d'une séquence
III. Gérer une PlayList
III-A. Créer une PlayList
III-B. Passer à la séquence suivante ou précédente
III-C. Supprimer une séquence dans la PlayList
III-D. Lire une séquence spécifique de la PlayList
III-E. Lister le nom des séquences contenues dans la PlayList
III-F. Ajouter une séquence dans la PlayList
III-G. Retrouver l'index de la séquence active
III-H. Compter le nombre de séquences dans la PlayList
IV. Gérer les CD Audio
V. Utiliser la librairie sans objet support
VI. Divers
VI-A. Lister les lecteurs de CD et de DVD installés
VI-B. Ouvrir le lecteur de CD / DVD
VI-C. Lancer le lecteur Windows Media Player pour lire un fichier
VII. Téléchargement
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
| Vb |
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:
| Vb |
WindowsMediaPlayer1.settings.autoStart = False
WindowsMediaPlayer1.URL = "C:\leFichier.mp3" |
Ensuite, pour lire le fichier, utilisez:
| Vb |
WindowsMediaPlayer1.Controls.Play |
Il est possible de spécifier une position précise
dans la séquence pour débuter la lecture.
| Vb |
Private Sub CommandButton1_Click()
WindowsMediaPlayer1.URL = "C:\maMusique.mp3"
WindowsMediaPlayer1.Controls.currentPosition = 180
End Sub |
II-B. Arrêter la lecture
| Vb |
WindowsMediaPlayer1.Controls.Stop |
II-C. Afficher la durée de la séquence en cours
| Vb |
Private Sub CommandButton1_Click()
WindowsMediaPlayer1.URL = "C:\leFichier.mp3"
While WindowsMediaPlayer1.playState = 9: DoEvents: Wend
MsgBox WindowsMediaPlayer1.currentMedia.durationString
End Sub |
Remarque:
La propriété Duration renvoie la durée en secondes
| Vb |
MsgBox WindowsMediaPlayer1.currentMedia.duration |
Pour afficher la position de la lecture en cours au format hh:mm:ss, utilisez:
| Vb |
MsgBox WindowsMediaPlayer1.Controls.currentPositionString |
II-D. Effectuer une pause
| Vb |
WindowsMediaPlayer1.Controls.Pause |
Et pour relancer la séquence:
| Vb |
WindowsMediaPlayer1.Controls.Play |
II-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.
| Vb |
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:
| Vb |
MsgBox WindowsMediaPlayer1.Status |
Une deuxième solution:
| Vb |
Select Case WindowsMediaPlayer1.playState
Case 0: MsgBox "Undefined"
Case 1: MsgBox "Stopped"
Case 2: MsgBox "Paused"
Case 3: MsgBox "Playing"
Case 4: MsgBox "ScanForward"
Case 5: MsgBox "ScanReverse"
Case 6: MsgBox "Buffering"
Case 7: MsgBox "Waiting"
Case 8: MsgBox "MediaEnded"
Case 9: MsgBox "Transitioning"
Case 10: MsgBox "Ready"
Case 11: MsgBox "Reconnecting"
End Select |
II-G. Désactiver et Réactiver le son
| Vb |
WindowsMediaPlayer1.settings.mute = True |
| Vb |
WindowsMediaPlayer1.settings.mute = False |
II-H. Modifier le volume sonore
Attribuez une valeur entre 0 et 100 (%) pour modifier la position du curseur de réglage sonore.
| Vb |
WindowsMediaPlayer1.settings.volume = 50 |
II-I. Effectuer une avance rapide
| Vb |
If WindowsMediaPlayer1.Controls.isAvailable("FastForward") Then _
WindowsMediaPlayer1.Controls.fastForward |
Pour revenir en lecture normale
| Vb |
WindowsMediaPlayer1.Controls.Play |
II-J. Lire la même séquence en boucle
| Vb |
WindowsMediaPlayer1.Controls.Play
WindowsMediaPlayer1.settings.setMode "loop", True |
Pour vérifier le statut, utilisez:
| Vb |
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.
| Vb |
Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If NewState = 3 Then _
WindowsMediaPlayer1.fullScreen = True
End Sub |
II-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.
| Vb |
MsgBox WindowsMediaPlayer1.currentMedia.getItemInfo("Name")
|
Une autre solution qui liste toutes les informations:
| Vb |
Private Sub CommandButton1_Click()
Dim Resultat As String
Dim i As Integer
Dim Cm As WMPLib.IWMPMedia
Set Cm = WindowsMediaPlayer1.currentMedia
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 Sub |
II-M. Modifier les informations d'une séquence
Par exemple pour modifier le titre de la séquence en cours, utilisez:
| Vb |
WindowsMediaPlayer1.currentMedia.setItemInfo "title", "Nouveau_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:
| Vb |
Dim Xwmp As IWMPMedia
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
WindowsMediaPlayer1.Controls.Play |
III-B. Passer à la séquence suivante ou précédente
| Vb |
WindowsMediaPlayer1.Controls.Next |
Remarque:
Le premier item de la PlayList sera réactivé si vous êtes arrivé en fin de liste.
| Vb |
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)
| Vb |
Dim It As Object
Set It = WindowsMediaPlayer1.currentPlaylist.Item(1)
WindowsMediaPlayer1.currentPlaylist.RemoveItem It |
III-D. Lire une séquence spécifique de la PlayList
Exemple pour lire la 3eme séquence:
| Vb |
Dim It As Object
Set It = WindowsMediaPlayer1.currentPlaylist.Item(2)
WindowsMediaPlayer1.Controls.playItem It |
III-E. Lister le nom des séquences contenues dans la PlayList
| Vb |
Sub Lister_NomDesSequences_DansLaPlayList()
Dim Pl As IWMPPlaylist
Dim j As Integer, i As Integer
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
MsgBox Pl.Item(i).Name
Next i
End Sub |
III-F. Ajouter une séquence dans la PlayList
La séquence est automatiquement placée à la suite des items existants.
| Vb |
Dim Ad As IWMPMedia
Set Ad = WindowsMediaPlayer1.newMedia("C:\couldntStandTheWeather.mp3")
WindowsMediaPlayer1.currentPlaylist.appendItem Ad |
III-G. Retrouver l'index de la séquence active
| Vb |
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
| Vb |
WindowsMediaPlayer1.currentPlaylist.Count |
IV. 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.
| Vb |
Private Sub CommandButton1_Click()
Dim Lecteur As wmplib.IWMPCdrom
Dim It As wmplib.IWMPMedia
Set Lecteur = WindowsMediaPlayer1.cdromCollection.Item(0)
WindowsMediaPlayer1.currentPlaylist = Lecteur.Playlist
If WindowsMediaPlayer1.playState = 0 Then
MsgBox "Opération annulée."
Exit Sub
End If
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
| Vb |
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
| Vb |
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.
| Vb |
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 Sub |
VI-B. Ouvrir le lecteur de CD / DVD
| Vb |
Sub ouvrirLecteur()
Dim Wmp As Object, Lecteur As Object
Set Wmp = CreateObject("WMPlayer.OCX.7")
Set Lecteur = Wmp.cdromCollection.Item(0)
Lecteur.eject
End Sub |
VI-C. Lancer le lecteur Windows Media Player pour lire un fichier
| Vb |
Sub lancerUneVideo()
Dim Wmp As WindowsMediaPlayer
Set Wmp = CreateObject("WMPlayer.OCX.7")
Wmp.openPlayer "C:\monFilm.mpg"
End Sub |
VII. Téléchargement


Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention
préalable de l'autorisation de l'auteur.