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

时间:2008-09-11 13:02:32

标签: c# windows media wmp

我正在寻找一种与独立完整版Windows Media Player进行交互的方法 大多数情况下,我需要知道当前播放曲目的路径。

iTunes SDK让这一切变得非常简单,但不幸的是,使用Windows Media Player真的没有任何办法,至少在.Net(C#)没有任何大量使用pinvoke,我不太满意

由于

只是为了澄清:我不想在我的应用程序中嵌入新的Windows Media Player实例,而是控制/读取“真正的”完整版Windows Media Player,由用户单独启动

4 个答案:

答案 0 :(得分: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 :(得分:5)

对于远程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 = new RemotedWindowsMediaPlayer(); WMPLib.WindowsMediaPlayer myPlayer = this.GetOcx()as WMPLib.WindowsMediaPlayer;

然后你去..

答案 2 :(得分:2)

我的书签中有这个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肯定是更好的解决方案。

答案 3 :(得分:1)

我在与Windows Media Player交互时看到的最佳信息是由Stephen Toub编写的{​​{3}}。

他列出了一大堆不同的方式来播放dvr-ms文件(虽然它们的格式并不重要)。您可能感兴趣的位是关于使用Media Player ActiveX控件,您可以通过右键单击并添加Windows Media Player ActiveX控件来添加到Visual Studio工具箱。然后,您可以将播放器嵌入到您的应用中,并访问Media Player的各种属性,例如url:

WMPplayer.URL = stringPathToFile;

这个解决方案可能不是你想要的,因为它正在启动一个新的Media Player实例(据我所知),但它可能会指向你正确的方向。