如何在C#中与Windows Media Player进行交互

9
我想找一个方法与独立的完整版本的Windows Media Player进行交互。大多数情况下,我需要知道当前播放曲目的路径。
iTunes SDK可以轻松实现此功能,但不幸的是,在没有过度使用Pinvoke的情况下(至少不是在.Net(C#)中),几乎没有办法在Windows Media Player上实现这一点,而我对此并不太舒服。
谢谢。
仅澄清一下:我不想在我的应用程序中嵌入新的Windows Media Player实例,而是控制/读取用户单独启动的“真正”的完整版本的Windows Media Player。
4个回答

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;

请参阅以编程方式创建Windows Media Player控件获取更多信息。


7
这种方法无法与“独立”的WMP实例进行交互。 - smwikipedia

5
要远程控制Windows Media Player,您可以使用IWMPRemoteMediaServices接口来控制独立的Windows Media Player。您应该能够从WMP播放器对象中读取所有所需的信息,例如标题或文件名。不幸的是,在SDK中没有C#示例代码。您可以从这里获取文件:http://d.hatena.ne.jp/punidama/20080227 查找文件WmpRemote.zip。最初它来自于这里:http://blogs.msdn.com/ericgu/archive/2005/06/22/431783.aspx 然后,您需要将其转换为WindowsMediaPlayer对象: RemotedWindowsMediaPlayer rm = new RemotedWindowsMediaPlayer(); WMPLib.WindowsMediaPlayer myPlayer = this.GetOcx() as WMPLib.WindowsMediaPlayer;
就这样...

示例代码的压缩包可以在Web存档中找到:http://web.archive.org/web/20061215062200if_/http://www.gotdotnet.com:80/Community/UserSamples/Download.aspx?SampleGuid=E1DBEA97-9731-4BDA-9442-AB82C8D78DA9 - NineBerry

4
我曾经收藏了这个链接:https://social.msdn.microsoft.com/Forums/vstudio/en-US/dbd43d7e-f3a6-4087-be06-df17e76b635d/windows-media-player-remoting-in-c?forum=clr,但没有进行任何测试。它只是指向正确方向的一个指针。尽管它不是官方的,需要一些挖掘,但你应该可以获得一个相当简单的包装器(在幕后仍然使用 PInvoke),可以围绕着 Windows Media Player 进行操作。
希望对你有所帮助。
哦,我误解了。我以为你在谈论如何控制当前运行的 Windows Media Player 实例。如果你自己托管 Windows Media Player,那么 WMPLib 显然是更好的解决方案。

你是不是想要链接到某个东西...? - Justin Bennett
1
我认为这就是他想要的……一种可以访问和控制当前运行的WMP实例的方法。 - Justin Bennett
非常感谢,这正是我要找的,运行得很好。你解决了我花费2天才能解决的问题,只用了6分钟,太棒了!谢谢! - eric
17
链接已经失效了,可以有人修复一下吗?谢谢 :) - Isuru
1
我找到了我认为是该线程(相同的GUID)。我已编辑上面的答案。等待审核。 - Wodin

1

我看过与Windows Media Player交互的最好信息是由Stephen Toub撰写的文章

他列出了许多不同的播放dvr-ms文件的方法(对于此问题,它们的格式并不重要)。可能对您感兴趣的部分是关于使用Media Player ActiveX控件的内容,您可以通过右键单击并添加Windows Media Player ActiveX COM控件将其添加到Visual Studio工具箱中。然后,您可以将播放器嵌入到应用程序中,并访问Media Player的各种属性,例如url:

WMPplayer.URL = stringPathToFile;

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接