[CF.Skills]在.NET CF中嵌入Media Player(C#)

一直尋找在WM5上面如何使用MediaPlayer播放音樂。


終於在微軟找到一個多媒體案例中提到,詳見:


http://www.microsoft.com/china/MSDN/library/Mobility/pocketpc/WorkingwithMultimedia.mspx

 


  只不過方法有些複雜,不過還好你可以下載它的Sample,然後在你的託管項目中引用該項目。
不管怎麼說,畢竟.NET Compact Framework中沒有可以直接操作wmp的方法。但是,即便如此我們仍然可以使用託管代碼對windows media player進行控制。其基本思路是先爲media player創建一條單獨的進程,再通過忘Media player的窗體發送消息來控制Media Player。下面來看看這是如何通過託管代碼做到的,
首先,創建進程並傳入相應參數:

            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);
        }
  程序運行效果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章