簡體   English   中英

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

[英]How to interact with Windows Media Player in C#

我正在尋找一種與獨立完整版 Windows Media Player 進行交互的方法。
大多數情況下,我需要知道當前播放曲目的路徑。

iTunes SDK 使這變得非常簡單,但不幸的是,Windows Media Player 確實沒有任何方法可以做到這一點,至少在 .Net(C#) 中沒有任何大量使用 pinvoke 的方法,我對此並不滿意。

謝謝

只是為了澄清:我不想在我的應用程序中嵌入 Windows Media Player 的新實例,而是控制/讀取由用戶單獨啟動的“真實”完整版 Windows Media Player

只需添加對 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;

你去吧..

我有這個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 無疑是更好的解決方案。

我所看到的有關與 Windows Media Player 交互的最佳信息是 Stephen Toub 撰寫的這篇文章

他列出了大量不同的播放 dvr-ms 文件的方法(盡管它們的格式並不重要)。 您可能感興趣的一點是關於使用 Media Player ActiveX 控件,您可以通過右鍵單擊並添加 Windows Media Player ActiveX COM 控件將其添加到 Visual Studio 工具箱。 然后,您可以將播放器嵌入到您的應用程序中,並訪問媒體播放器的各種屬性,例如 url:

WMPplayer.URL = stringPathToFile;

此解決方案可能不是您想要的,因為它正在啟動 Media Player 的新實例(據我所知),但是它可能會為您指明正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM