Developpez.com

Une très vaste base de connaissances en informatique avec
plus de 100 FAQ et 10 000 réponses à vos questions

Utiliser Windows Media Player en VB et VBA

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.

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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
Sélectionnez

'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:

Vb
Sélectionnez

'Désactive la lecture automatique
WindowsMediaPlayer1.settings.autoStart = False

'Définit le fichier
WindowsMediaPlayer1.URL = "C:\leFichier.mp3"

Ensuite, pour lire le fichier, utilisez:

Vb
Sélectionnez

WindowsMediaPlayer1.Controls.Play


Il est possible de spécifier une position précise dans la séquence pour débuter la lecture.

Vb
Sélectionnez

Private Sub CommandButton1_Click() 
    'Chargement fichier & lecture 
    WindowsMediaPlayer1.URL = "C:\maMusique.mp3" 
    
    'Positionnement à la 3eme minute 
    WindowsMediaPlayer1.Controls.currentPosition = 180 'secondes 
End Sub 	

II-B. Arrêter la lecture

Vb
Sélectionnez

WindowsMediaPlayer1.Controls.Stop			

II-C. Afficher la durée de la séquence en cours

Vb
Sélectionnez

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

Vb
Sélectionnez

'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:

Vb
Sélectionnez

MsgBox WindowsMediaPlayer1.Controls.currentPositionString

II-D. Effectuer une pause

Vb
Sélectionnez

WindowsMediaPlayer1.Controls.Pause



Et pour relancer la séquence:

Vb
Sélectionnez

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
Sélectionnez

'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:

Vb
Sélectionnez

MsgBox WindowsMediaPlayer1.Status			



Une deuxième solution:

Vb
Sélectionnez

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 Select

II-G. Désactiver et Réactiver le son

Vb
Sélectionnez

'Désactive le son
WindowsMediaPlayer1.settings.mute = True
Vb
Sélectionnez

'Active le son
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
Sélectionnez

'Modifie le volume sonore
WindowsMediaPlayer1.settings.volume = 50

II-I. Effectuer une avance rapide

Vb
Sélectionnez

'Effectue une avance rapide
If WindowsMediaPlayer1.Controls.isAvailable("FastForward") Then _
   WindowsMediaPlayer1.Controls.fastForward



Pour revenir en lecture normale

Vb
Sélectionnez

'pour revenir à la lecture normale
WindowsMediaPlayer1.Controls.Play

II-J. Lire la même séquence en boucle

Vb
Sélectionnez

WindowsMediaPlayer1.Controls.Play
WindowsMediaPlayer1.settings.setMode "loop", True			


Pour vérifier le statut, utilisez:

Vb
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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:

Vb
Sélectionnez

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 Sub

II-M. Modifier les informations d'une séquence

Par exemple pour modifier le titre de la séquence en cours, utilisez:

Vb
Sélectionnez

'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:

Vb
Sélectionnez

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.Play

III-B. Passer à la séquence suivante ou précédente

Vb
Sélectionnez

'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.


Vb
Sélectionnez
				
'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)

Vb
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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 Sub

III-F. Ajouter une séquence dans la PlayList

La séquence est automatiquement placée à la suite des items existants.

Vb
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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


Vb
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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 Sub

VI-C. Lancer le lecteur Windows Media Player pour lire un fichier

Vb
Sélectionnez

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

VII. Téléchargement

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

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.