9

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

iTunes SDK 使这变得非常容易,但不幸的是,Windows Media Player 确实没有任何方法可以做到这一点,至少在 .Net(C#) 中没有任何大量使用 pinvoke 的情况,我对此不太满意。

谢谢

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

4

4 回答 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 控件

于 2008-09-11T13:09:23.347 回答
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;

你去吧..

于 2009-04-19T04:47:17.883 回答
4

我有这个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 无疑是更好的解决方案。

于 2008-09-11T13:08:26.377 回答
1

我在与 Windows Media Player 交互方面看到的最佳信息是Stephen Toub 撰写的这篇文章。

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

WMPplayer.URL = stringPathToFile;

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

于 2008-09-11T13:17:24.937 回答