昨天有人在http://winbile.net/bbs上問到,在WM5上面如何使用MediaPlayer播放音樂。
其實微軟有在一個多媒體案例中提到,詳見:
http://www.microsoft.com/china/MSDN/library/Mobility/pocketpc/WorkingwithMultimedia.mspx
只不過方法有些複雜,不過還好你可以下載它的Sample,然後在你的託管項目中引用該項目。
不管怎麼說,畢竟.NET Compact Framework中沒有可以直接操作wmp的方法。但是,即便如此我們仍然可以使用Managed 程式碼對windows media player進行控制。其基本思路是先為media player建立一條單獨的進程,再通過忘Media player的表單發送訊息來控制Media Player。下面來看看這是如何通過Managed 程式碼做到的,
首先,建立進程並傳入相應參數:
wmpProcess = new Process();
wmpProcess.StartInfo.FileName = "wmplayer.exe";
wmpProcess.StartInfo.Arguments = wmpArgs;
這裡要注意一下Arguments的格式,應該像這樣:"""\My Documents\TestVideo.wmv"" /fullscreen";檔案路徑必須和後面的參數區分開,這裡C#和VB中,這樣的加雙引號的方式是合法的。
然後,啟動進程,音樂開始播放了(此時也許你希望使用者的焦點仍然你的FORM,那麼你應將你的form放置在頂層),在WM5.0以上的系統中,提供了更多對WMP的支援,你可以通過某些屬性訪問到當前播放的曲目名,藝術家的名字,專輯名,位元速率,已經播放的時間(精確到毫秒)甚至是音樂風格。下面列舉了一些: artist = SystemState.MediaPlayerTrackArtist;
playingTrack = SystemState.MediaPlayerTrackTitle;
album = SystemState.MediaPlayerAlbumTitle;
bitRate = SystemState.MediaPlayerTrackBitrate;
style = SystemState.MediaPlayerTrackGenre;
還有一個問題是如何停止MediaPlayer呢?我們還是可以通過給表單發送訊息來間接的控制,不過這裡要用到一個本地的函數SendMessage,代碼如下:
//引用SendMessage並命名為CloseWMP
private const UInt32 WM_CLOSE = 16;
[DllImport("Coredll.dll", EntryPoint = "SendMessage")]
public static extern Int32 CloseWMP(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
//用的時候這樣
public void StopWMP()
{
MyRef.CloseWMP(wmpProcess.MainWindowHandle, WM_CLOSE, 0, 0);
}
程式運行效果如下:
完整的代碼點擊此處下載
All rights reserved by Freesc Huang
http://fox23.cnblogs.com
hjd.click [AT] gmail.com
2008-2-18