[CF.Skills]在.NET CF中嵌入Media Player(C#)
昨天有人在http://winbile.net/bbs上问到,在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;
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;
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
posted on 2008-02-18 02:36 J.D Huang 阅读(2805) 评论(8) 编辑 收藏 举报