我正在寻找一种与独立完整版本的Windows Media Player进行交互的方法。
大多数情况下,我需要知道当前播放的曲目的path。
iTunes SDK使这非常简单,但不幸的是,没有任何方法可以用Windows Media Player来完成,至less在.Net(C#)中没有任何大量使用pinvoke的情况,这并不令我感到舒服。
谢谢
只是为了澄清:我不想在我的应用程序中embedded一个Windows媒体播放器的新实例,而是控制/读取由用户分开启动的“真正的”完整版本的Windows媒体播放器
我在我的这个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媒体播放器实例。 如果您自己托管Windows Media Player,那么WMPLib肯定是更好的解决方案。
只需添加一个引用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控件以获取更多信息
对于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;
在那里你去..
关于与Windows Media Player交互的最佳信息是Stephen Toub撰写的这篇文章 。
他列出了播放dvr-ms文件的不同方式的一个完整负载(不过,它们的格式并不重要)。 您可能感兴趣的一点是使用Media Player ActiveX控件,您可以通过右键单击并添加Windows Media Player ActiveX COM控件将其添加到Visual Studio工具箱。 然后,您可以将播放器嵌入到您的应用中,并访问Media Player的各种属性,如url:
WMPplayer.URL = stringPathToFile;
这个解决方案可能不是你想要的,因为它开始了一个媒体播放器的新实例(据我所知),但它可能会指出你在正确的方向。