IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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.