2008-09-11 18 views
9

Ich bin auf der Suche nach einer Möglichkeit zur Interaktion mit einer eigenständigen Vollversion von Windows Media Player.
Meistens muss ich den Pfad des aktuell gespielten Titels kennen.Interaktion mit Windows Media Player in C#

Das iTunes SDK macht das wirklich einfach, aber leider gibt es wirklich keine Möglichkeit, es mit Windows Media Player zu machen, zumindest nicht in .Net (C#) ohne starken Einsatz von Pinvoke, was mir nicht wirklich behagt mit.

Dank

Gerade clearify: Ich will nicht eine neue Instanz von Windows Media Player in meiner App eingebettet, sondern steuern/lesen Sie die „echte“ Vollversion von Windows Media Player, begann seperat von der Benutzer

Antwort

2

Ich hatte diese https://social.msdn.microsoft.com/Forums/vstudio/en-US/dbd43d7e-f3a6-4087-be06-df17e76b635d/windows-media-player-remoting-in-c?forum=clr in meinen Lesezeichen, aber habe es nicht in jedem Fall getestet. Nur ein Zeiger in die richtige Richtung. Es ist nichts Offizielles und erfordert ein wenig Graben, aber Sie sollten einen ziemlich einfachen Wrapper (der immer noch PInvoke unter der Haube verwendet - aber Sie werden es nicht sehen) um Windows Media Player bekommen.

Hoffe, dass hilft.

Oh, ich missverstanden. Ich dachte, Sie sprechen über die Steuerung der derzeit ausgeführten Windows Media Player-Instanz. Wenn Sie Windows Media Player selbst hosten, ist WMPLib sicherlich die bessere Lösung.

+0

Meinst du damit etwas zu verbinden ...? –

+1

Ich denke, das ist, was er wollte ... eine Möglichkeit, auf eine aktuell laufende Instanz von WMP zuzugreifen und sie zu kontrollieren. –

+0

Vielen Dank, das war genau das, was ich suchte, funktionierte wie ein Charme. Du hast mein Problem gelöst, das ich 2 Tage lang in 6 Minuten gelöst habe, großartig! Vielen Dank! – eric

7

Fügen Sie einfach einen Verweis auf wmp.dll (\ windows \ system32 \ wmp.dll)

using WMPLib; 

Und dann können Sie einen Media-Player

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

Creating the Windows Media Player Control Programmatically Weitere Informationen finden Sie instanziiert

+7

Dieser Ansatz kann nicht mit der "eigenständigen" WMP-Instanz interagieren. – smwikipedia

1

Die besten Informationen, die ich bei der Interaktion mit Windows Media Player gesehen habe, ist diese article geschrieben von Stephen Toub.

Er listet eine ganze Reihe von verschiedenen Möglichkeiten auf, dvr-ms-Dateien abzuspielen (es spielt aber keine Rolle, welches Format sie dafür haben). Das Bit, das möglicherweise von Interesse für Sie ist, ist die Verwendung eines Media Player ActiveX-Steuerelements, das Sie der visuellen Studio-Toolbox hinzufügen können, indem Sie mit der rechten Maustaste auf das Windows Media Player ActiveX COM-Steuerelement klicken. Du kannst dann den Player in den App, und Zugriff auf verschiedene Eigenschaften von Media Player, wie die url:

WMPplayer.URL = stringPathToFile; 

Diese Lösung ist möglicherweise nicht, was Sie wollen, weil es eine neue Instanz von Media Player starten (soweit Ich weiß), aber es könnte Sie in die richtige Richtung weisen.

4

Zum Remotieren von Windows Media Player können Sie die Schnittstelle IWMPRemoteMediaServices zum Steuern des eigenständigen Windows Media Player verwenden. Und Sie sollten in der Lage sein, alle Informationen wie Titel oder Dateiname von Ihrem WMP-Player-Objekt zu lesen. Leider gibt es im SDK keinen C# - Code. Sie können die Dateien von hier: http://d.hatena.ne.jp/punidama/20080227 Suchen Sie die Datei WmpRemote.zip Ursprünglich es von hier: http://blogs.msdn.com/ericgu/archive/2005/06/22/431783.aspx

Dann sind Sie auf das Objekt geworfen Windows müssen: RemotedWindowsMediaPlayer rm = new RemotedWindowsMediaPlayer(); WMPLib.WindowsMediaPlayer myPlayer = this.GetOcx() als WMPLib.Windows Media Player;

und los gehts ..