使用Mci指令打造你自己的媒体播放器
电子科技大学软件学院03级 周银辉
转载请注明出处
1.说明:
网上mic的文章一大堆,但大多天下文章一大抄。这里说点实际的,在C#中如何使用它来做个播放器。
2.如何发送指令:
/// <summary>
/// 发送mci指令
/// </summary>
/// <param name="command">要发送的指令</param>
/// <param name="returnString">返回串</param>
/// <param name="returnLength">缓冲区大小</param>
/// <param name="hwndCallBack">回调。一般设置为0</param>
/// <returns></returns>
[DllImport("winmm.dll",EntryPoint="mciSendString", CharSet=CharSet.Auto)]
public static extern int mciSendString(string command, string returnString,
int returnLength, int hwndCallBack);
这里的参数command就是我们要发送的指令
以后我们都是通过这个mcisendString函数发送指令进行媒体操作
3. 指令是什么样的?
比sql语句还有简单,比如我们的音乐文件是 path = "c:\\my.mp3",现在我们要发送一条指令打开该文件以便以后播放它,那么我们的指令就是 command = "open \"" +path+ "\"" +" alias song";注意path两边要有引号扩起来,这表示它是一个参数(这与命令行参数类似),alias 是取别名,我们将
"c:\\my.mp3"取了一个别名叫做song,这样我们以后就可以针对song进行操作了
4. 最简单的: 打开 -> 播放 -> 关闭
/// <summary>
/// 打开指定的音乐文件
/// 打开时别名为song
/// </summary>
/// <param name="path">文件的完整路径</param>
public void Open(string path)
{
if(!File.Exists(path))
{
MessageBox.Show("文件不存在\n"+path);
return;
}
MciPlayer.mciSendString("close all","",0,0);
MciPlayer.mciSendString("open \"" +path+ "\"" +" alias song", "", 0,0);
}
/// <summary>
/// 从头播放MciPlayer.Open打开的文件,请先确保文件已经打开
/// </summary>
public void Play()
{
MciPlayer.mciSendString("play song", "", 0, 0);
}
/// <summary>
/// 停止播放
/// </summary>
public void Stop()
{
MciPlayer.mciSendString("stop song", "", 0, 0);
MciPlayer.mciSendString("close song","", 0, 0);
}
5. 更多的
mci指令很多,包括视频控制等,可以说是庞杂,但幸运的是你可以在msdn中不使用筛选器,在索引中输入MCI Command Strings便能查找到相关的信息
这是我做的一个简单的播放器(支持视频)
如果需要源代码的话,可以email: yinhui_zhou@yahoo.com.cn