昨天有人在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;
这里要注意一下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
本文详细介绍了在Windows Mobile 5.0平台上使用.NET Compact Framework通过托管代码控制Windows Media Player播放音乐的方法。包括创建单独的MediaPlayer进程、通过发送消息控制播放及停止,以及如何获取播放曲目的详细信息。

被折叠的 条评论
为什么被折叠?



