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
Sub
II-B. Arrêter la lecture▲
WindowsMediaPlayer1.Controls.Stop
II-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.currentPositionString
II-D. Effectuer une pause▲
WindowsMediaPlayer1.Controls.Pause
Et pour relancer la séquence:
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.
'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
Select
II-G. Désactiver et Réactiver le son▲
'Désactive le son
WindowsMediaPlayer1.settings.mute
=
True
'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.
'Modifie le volume sonore
WindowsMediaPlayer1.settings.volume
=
50
II-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.Play
II-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
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.
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
Sub
II-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.Play
III-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
It
III-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
It
III-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
Sub
III-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
Ad
III-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.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.
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
Sub
VI-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
Sub
VI-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