2008-09-11 16 views
9

Je cherche un moyen d'interagir avec une version complète autonome de Windows Media Player.
Généralement, j'ai besoin de connaître le chemin de la piste en cours de lecture. Le SDK d'iTunes rend cela vraiment facile, mais malheureusement, il n'y a vraiment aucun moyen de le faire avec Windows Media Player, au moins pas en .Net (C#) sans une utilisation intensive de pinvoke, que je ne suis pas vraiment à l'aise avec.Comment interagir avec Windows Media Player en C#

Merci

Juste pour clearify: Je ne veux pas intégré une nouvelle instance de Windows Media Player dans mon application, mais contrôler/lire la « vraie » version complète de Windows Media Player, a commencé par séparement l'utilisateur

Répondre

2

J'ai eu ce https://social.msdn.microsoft.com/Forums/vstudio/en-US/dbd43d7e-f3a6-4087-be06-df17e76b635d/windows-media-player-remoting-in-c?forum=clr dans mes signets mais je n'ai pas testé de toute façon. Juste un indicateur dans la bonne direction. Ce n'est rien d'officiel et nécessitera un peu de creusage, mais vous devriez obtenir un emballage assez simple (qui utilisera toujours PInvoke sous le capot - mais vous ne le verrez pas) autour de Windows Media Player.

Espérons que ça aide.

Oh, j'ai mal compris. Je pensais que vous parliez de contrôler l'instance de Windows Media Player en cours d'exécution. Si vous hébergez Windows Media Player vous-même, WMPLib est certainement la meilleure solution.

+0

Voulez-vous dire à un lien vers quelque chose ...? –

+1

Je pense que c'est ce qu'il voulait ... un moyen d'accéder et de contrôler une instance de WMP en cours d'exécution. –

+0

Merci beaucoup, c'était exactement ce que je cherchais, travaillé comme un charme. Vous avez résolu mon problème, je passe 2 jours à résoudre en 6 minutes, génial! Merci! – eric

7

Il suffit d'ajouter une référence à wmp.dll (\ windows \ system32 \ wmp.dll)

using WMPLib; 

Et vous pouvez instancier un lecteur multimédia

var Player = new WindowsMediaPlayer(); 
// Load a playlist or file and then get the title 
var title = Player.controls.currentItem.name; 

Voir Creating the Windows Media Player Control Programmatically pour plus d'informations

+7

cette approche ne peut pas interagir avec l'instance WMP "autonome". – smwikipedia

1

La meilleure information que j'ai vu sur l'interaction avec Windows Media Player est article écrit par Stephen Toub.

Il répertorie une charge complète de différentes façons de lire les fichiers dvr-ms (peu importe cependant le format qu'ils utilisent pour cela). Le bit qui vous intéresse peut-être à propos de l'utilisation d'un contrôle ActiveX Media Player, que vous pouvez ajouter à la boîte à outils Visual Studio en cliquant avec le bouton droit de la souris et en ajoutant le contrôle COM ActiveX de Windows Media Player. Vous pouvez ensuite intégrer le lecteur dans votre application et accéder à différentes options de Media Player, comme l'url:

WMPplayer.URL = stringPathToFile; 

Cette solution est peut-être pas ce que vous voulez, car il commence une nouvelle instance de Media Player (dans la mesure Je sais), mais cela pourrait vous indiquer la bonne direction.

4

Pour le Windows Media Player, vous pouvez utiliser l'interface IWMPRemoteMediaServices pour contrôler le Lecteur Windows Media autonome. Et vous devriez être capable de lire toutes les informations que vous voulez comme titre ou nom de fichier de votre objet joueur WMP. Malheureusement, il n'y a pas de code de smash C# dans le SDK inclus. Vous pouvez obtenir les fichiers d'ici: http://d.hatena.ne.jp/punidama/20080227 Recherchez le fichier WmpRemote.zip l'origine, il est d'ici: http://blogs.msdn.com/ericgu/archive/2005/06/22/431783.aspx

Ensuite, vous devez jeter à l'objet WindowsMediaPlayer: RemotedWindowsMediaPlayer rm = new RemotedWindowsMediaPlayer(); WMPLib.WindowsMediaPlayer myPlayer = this.GetOcx() en tant que WMPLib.WindowsMediaPlayer; Et