Afficher un message
Vieux 07/08/2005, 07h32   #1 (permalink)
MichelXld
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 814
Par défaut Piloter Windows Media Player depuis Excel

bonjour

vous trouverez ci joint quelques exemples pour piloter Windows Media Player depuis Excel

la source utilisée :
http://msdn.microsoft.com/library/de...vexcontrol.asp
(il s'agit de codes JScript que j'ai essayé d'adapter )

Testé avec Excel2002 et Windows Média Player 10.0
necessite d'activer la reference Windows Media Player

le document comporte 4 parties :
Piloter une séquence musicale spécifique
Piloter une playList ( gestion de plusieurs séquences musicales dans une session)
Visualiser une séquence vidéo ( un seul exemple tres simple )
L'objet Windows Media Player inséré dans une feuille ou dans un UserForm


remarque :
si vous faites une fausse manip et qu'une macro plante , il est possible que vous ne puissiez pas arrêter la séquence musicale avant la fin .
dans ce cas , sauvegardez vos données et fermer Excel : tout devrait rentrer dans l'ordre




@@@@@ Gérer une séquence musicale @@@@@


Démarrer et arreter une séquence musicale

Option Explicit
Dim Wmp As WindowsMediaPlayer
'necessite d'activer la reference Windows Media Player
'michelxld le 06.08.2005
'pour le forum http://www.excel-downloads.com

Sub jouerMediaPlayer()
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.URL = 'C:\\monFichier.mp3'
Wmp.Controls.Play
End Sub



Les procédures qui suivent supposent que la macro 'jouerMediaPlayer' a préalablement été lancée et se trouve active


Fermer la session Windows Media Player en cours

Sub arreterMediaPlayer()
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.stop
End Sub



Afficher la durée de la séquence musicale en cours

Sub dureeSequence()
Dim ValMin As Double, ValSec As Double, S As Double
S = Wmp.currentMedia.Duration
ValMin = Application.WorksheetFunction.RoundDown((S / 60), 0)
ValSec = Application.WorksheetFunction.RoundDown(S, 0) - (ValMin * 60)
MsgBox Format(ValMin, '00') & ':' & Format(ValSec, '00')
End Sub



Effectuer une pause de 5 secondes dans la séquence musicale

Sub pauseMediaPlayer()
Dim t As Date

If Wmp Is Nothing Then Exit Sub
Wmp.Controls.Pause
'
'temporisation de 5 secondes
t = Timer + 5: Do Until Timer > t: DoEvents: Loop
'pour relancer
Wmp.Controls.Play
End Sub



vérifier si l'action 'Pause' peut etre appliquée
( renvoie Vrai ou faux )

Sub verfieStatut_Pause()
'vérifie si l'action 'pause' peut etre appliquée ( renvoie Vrai ou Faux )
MsgBox Wmp.Controls.isAvailable('Pause')
End Sub



Afficher le statut de Windows Media Player

Sub afficheStatutWMP()
If Wmp Is Nothing Then Exit Sub
MsgBox Wmp.Status
End Sub


Afficher le statut de Windows Media Player ( un autre exemple )

Sub statut_WMP()

Select Case Wmp.playState
Case 0: MsgBox 'Undefined'
Case 1: MsgBox 'Stopped'
Case 2: MsgBox 'Paused'
Case 3: MsgBox 'Playing'
Case 4: MsgBox 'ScanForward' 'fast forwarding
Case 5: MsgBox 'ScanReverse' 'fast rewinding
Case 6: MsgBox 'Buffering'
Case 7: MsgBox 'Waiting'
Case 8: MsgBox 'MediaEnded'
Case 9: MsgBox 'Transitioning' 'Preparing new media item
Case 10: MsgBox 'Ready'
Case 11: MsgBox 'Reconnecting'
End Select

End Sub



Désactiver ou Activer le son

Sub desactiverLeSonWMP()
If Wmp Is Nothing Then Exit Sub
Wmp.settings.mute = True
End Sub

Sub activerLeSonWMP()
If Wmp Is Nothing Then Exit Sub
Wmp.settings.mute = False
End Sub



Afficher la version de Windows Media player installée

Sub afficherVersion_WMP()
If Wmp Is Nothing Then Exit Sub
MsgBox Wmp.versionInfo
End Sub



Effectuer une avance rapide sur la séquence , pendant 3 secondes

Sub accelererVitessseSequence_WMP()
Dim t As Date

If Wmp Is Nothing Then Exit Sub
If Wmp.Controls.isAvailable('FastForward') Then Wmp.Controls.fastForward
'
'temporisation de 3 secondes
t = Timer + 3: Do Until Timer > t: DoEvents: Loop
'pour revenir à la vitesse normale
Wmp.Controls.Play
End Sub



Le nom du fichier en cours de lecture

Sub nomFichierEnCourslecture()
Dim Cm As Object
Set Cm = Wmp.currentMedia
MsgBox Cm.Name
End Sub



Informations sur la séquence en cours

Sub informationSequenceEnCours()
MsgBox Wmp.currentMedia.getItemInfo('author')
MsgBox Wmp.currentMedia.getItemInfo('Title')
MsgBox Wmp.currentMedia.getItemInfo('Album')
MsgBox Wmp.currentMedia.getItemInfo('copyright')
MsgBox Wmp.currentMedia.getItemInfo('Artist')
MsgBox Wmp.currentMedia.getItemInfo('Genre')
MsgBox Wmp.currentMedia.getItemInfo('Bitrate') / 1000 & ' kbps'
MsgBox Wmp.currentMedia.getItemInfo('Abstract')
MsgBox Wmp.currentMedia.getItemInfo('bitRate')
MsgBox Wmp.currentMedia.getItemInfo('duration')
End Sub

une autre solution qui liste toutes les informations :

Sub informationsSequence_WMP()
Dim Resultat As String
Dim i As Integer
Dim Cm As WMPLib.IWMPMedia
Set Cm = Wmp.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



Modifier le volume sonore

(valeurs de 0 à 100 % )

Sub modifierVolumeSon()
Wmp.settings.volume = 50
End Sub





@@@@@ La gestion des PlayList @@@@@


Créer une PlayList de plusieurs séquences et les jouer à la suite

Option Explicit
Dim Wmp As WindowsMediaPlayer
'necessite d'activer la reference Windows Media Player
'michelxld le 06.08.2005
'pour le forum http://www.excel-downloads.com

Sub ajout_PlusieurSequences_PlayList_Et_Lance_Sequence ()
Dim Xwmp As IWMPMedia

Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.currentPlaylist.Clear

Set Xwmp = Wmp.newMedia('C:\\essai.mid') 'adapter les noms de fichiers
Wmp.currentPlaylist.insertItem 0, Xwmp

Set Xwmp = Wmp.newMedia('C:\\maMusique.mp3')
Wmp.currentPlaylist.insertItem 1, Xwmp

Set Xwmp = Wmp.newMedia('C:\\Jumbalaya.mid')
Wmp.currentPlaylist.insertItem 2, Xwmp

Wmp.Controls.Play
End Sub


nota:
-------
ne pas oublier de créer un bouton pour arreter la boucle

Sub arreterMediaPlayer()
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.stop
End Sub




Les procédures qui suivent supposent que la macro 'ajout_PlusieurSequences_PlayList_Et_Lance_Sequenc e' a préalablement été lancée et se trouve active


Pour passer à la séquence suivante ou précédente

Sub passerSequenceSuivante()
Wmp.Controls.Next
End Sub

Sub passerSequencePrecedente()
Wmp.Controls.Previous
End Sub



Supprimer la deuxieme séquence dans la playlist

remarque : l'index du premier élément = 0

Sub supprimer_SequenceDansPlayList()
Dim It As Object
Set It = Wmp.currentPlaylist.Item(1)
Wmp.currentPlaylist.RemoveItem It
End Sub



Lancer une séquence spécifique de la playlist ( exemple le 3 eme item )

Sub JouerUneSequenceSpecifique()
Dim It As Object
Set It = Wmp.currentPlaylist.Item(2)
Wmp.Controls.playItem It
End Sub



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

Set Pl = Wmp.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
'
'pour afficher la source :
'MsgBox Pl.Item(i).sourceURL
'
Next i
End Sub



Ajouter une séquence musicale dans la PlayList

( la séquence est automatiquement placée à la suite des items existants )

Sub ajouterSequence_dans_playList()
Dim Adx As IWMPMedia
Set Adx = Wmp.newMedia('C:\\maMusique.mp3') 'adapter le chemin
Wmp.currentPlaylist.appendItem Adx
End Sub



Insérer 3 séquences dans la PlayList et en jouer une au hasard

( sans lien direct avec les exemples précédents )

Sub lancerSequenceAleatoire()
Dim NombreItem As Integer, Aleat As Integer
Dim Xwmp As IWMPMedia

Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.currentPlaylist.Clear

Set Xwmp = Wmp.newMedia('C:\\fragancia.mid')
Wmp.currentPlaylist.insertItem 0, Xwmp

Set Xwmp = Wmp.newMedia('C:\\maMusique.mp3')
Wmp.currentPlaylist.insertItem 1, Xwmp

Set Xwmp = Wmp.newMedia('C:\\Jumbalaya.mid')
Wmp.currentPlaylist.insertItem 2, Xwmp

'------------------------------------------------------
NombreItem = Wmp.currentPlaylist.Count
Randomize
Aleat = Int((NombreItem * Rnd) + 1)
'------------------------------------------------------
Wmp.currentMedia = Wmp.currentPlaylist.Item(Aleat - 1)
Wmp.Controls.Play
End Sub




@@@@@ Lancer une séquence video et Divers @@@@@


Lancer une video

( sans lien avec les exemples précédents )

Sub lancerUneVideo()
Dim Wmp As WindowsMediaPlayer
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.openPlayer 'C:\\monFilm.mpg'
End Sub



Lister les lecteurs de CD et de DVD installés

Sub listeLecteurs_CD_DVD()
Dim Wmp As WindowsMediaPlayer
Dim iNumDrives As Integer, i As Integer
Dim oThisDrive As IWMPCdrom

Set Wmp = CreateObject('WMPlayer.OCX.7')

iNumDrives = Wmp.cdromCollection.Count
If Not iNumDrives > 0 Then MsgBox 'il n'y a pas de lecteur de CD ou DVD installés .'

For i = 0 To iNumDrives - 1
Set oThisDrive = Wmp.cdromCollection.Item(i)
MsgBox oThisDrive.driveSpecifier
Next i
End Sub




@@@@@ L'objet Windows Media Player inséré dans une feuille ou dans un UserForm @@@@@

Si vous utilisez Windows Média Player apres avoir inséré l'objet dans la feuille ( ou dans un UserForm) , vous pourrez facilement adapter les procédures vues précédemment


par exemple pour lire ou arreter un séquence musicale :

Sub jouerMediaPlayer()
Feuil1.WindowsMediaPlayer1.URL = 'C:\\maMusique.mp3'
Feuil1.WindowsMediaPlayer1.Controls.Play
End Sub

Sub arreterMediaPlayer()
Feuil1.WindowsMediaPlayer1.Controls.stop
End Sub



Voila , plus rien ne vous empeche de créer votre lecteur multi média personnalisé ...;o)


bonne journée
MichelXld

Message édité par: MichelXld, à: 07/08/2005 06:37
MichelXld est déconnecté   Réponse avec citation
ANNONCES