2008-09-11 56 views
9

我正在寻找一种方式与独立完整版本的Windows Media Player进行交互。
大部分我需要知道当前播放曲目的路径。如何与C#中的Windows Media Player进行交互#

iTunes SDK使这非常简单,但不幸的是,真的没有办法用Windows Media Player来做到这一点,至少在.Net(C#)没有任何大量使用pinvoke,我不是很舒服用。

感谢

只是为了clearify:我不想在我的应用程序的Windows Media Player嵌入一个新的实例,而是控制/读“真正”的完整版本的Windows Media Player,通过seperatly开始用户

回答

2

我在这个https://social.msdn.microsoft.com/Forums/vstudio/en-US/dbd43d7e-f3a6-4087-be06-df17e76b635d/windows-media-player-remoting-in-c?forum=clr在我的书签,但没有测试过它。只是一个正确的方向指针。这不是官方的,需要一点挖掘,但是你应该在Windows Media Player周围获得一个相当简单的包装(它仍然会在后台使用PInvoke - 但你不会看到它)。

希望有所帮助。

哦,我误解了。我以为你在谈论控制当前运行的Windows Media Player实例。如果您自己托管Windows Media Player,那么WMPLib肯定是更好的解决方案。

+0

你的意思是链接到某些东西...? – 2008-09-11 13:16:42

+1

我认为这就是他想要的......一种访问和控制当前正在运行的WMP实例的方法。 – 2008-09-11 13:19:50

7

只需添加一个参考的Wmp.dll(\ WINDOWS \ SYSTEM32 \的Wmp.dll)

using WMPLib; 

然后你就可以实例化一个媒体播放器

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
1

我在与Windows Media Player进行交互时看到的最佳信息是由Stephen Toub编写的article

他列出了播放dvr-ms文件的不同方式的完整负载(其实并不重要)。您可能感兴趣的一点是使用Media Player ActiveX控件,您可以通过右键单击并添加Windows Media Player ActiveX COM控件将其添加到Visual Studio工具箱中。然后,您可以嵌入播放器到你的应用程序,访问媒体播放器的各种属性,如URL:

WMPplayer.URL = stringPathToFile; 

这种解决方案可能不是你想要的,因为它启动媒体播放器的一个新实例(据我知道),但它可能会指出你在正确的方向。

4

对于Windows Media Player的远程处理,您可以使用IWMPRemoteMediaServices界面来控制独立的Windows Media Player。你应该能够从你的WMP播放器对象中读取你想要的标题或文件名的所有信息。不幸的是,在SDK中没有C#smaple代码。你可以从这里的文件:http://d.hatena.ne.jp/punidama/20080227查找文件WmpRemote.zip 它最初从这里:http://blogs.msdn.com/ericgu/archive/2005/06/22/431783.aspx

然后,你必须投给的WindowsMediaPlayer对象: RemotedWindowsMediaPlayer RM =新RemotedWindowsMediaPlayer(); WMPLib.WindowsMediaPlayer myPlayer = this.GetOcx()as WMPLib。Windows媒体播放器;

那里你去..