MCI的使用(mciSendCommand)

发布时间:2013年1月25日 作者:未知 查看次数:1305

MCI的使用(mciSendCommand)


转:http://freetoskey.blog.51cto.com/1355382/844141

 

很多朋友向我索取MCI的资料,但是我这里的资料早就不知道哪里去了,这里把MSDN里面的东西拿出来给大家看一下,方便英语不好的朋友。
用MCI进行编程主要有两个东西需要掌握,下面的篇幅用来说明这两个方面。

一、mciSendCommand函数

这个函数用来打开MCI设备并且通过给设备发送MCI命令来对设备进行控制,这个函数的原型是这样的:

MCIERROR mciSendCommand(
MCIDEVICEID
 IDDevice ,   //要控制的设备的ID,无符号整数 
UINT uMsg ,                       //MCI命令,像MCI_OPEN,MCI_PLAY 
DWORD fdwCommand ,     //命令的参数,不同的命令有不同的参数可以选择   
DWORD dwParam            //Param也就是像MCI_OPEN_PARMS之类的,每个命令有不同的Param 
);

MCI命令是在mmsystem.h中define的整数,常用的命令有MCI_OPEN(打开设备)、MCI_PLAY(播放)、MCI_CLOSE(关闭设备)等,详细的命令信息请看MSDN,如果没有MSDN光盘可以到http://www.msdn.com 查看。下面演示程序演示如何打开一个设备播放MP3文件。

MCI_OPEN_PARMS op;
op.dwCallback=NULL;
op.lpstrAlias=NULL;
op.lpstrDeviceType=_T("MPEGAudio"); //设备类型,大多数文件可以这样设置
op.lpstrElementName=_T("D://1.mp3") ;//文件路径
op.wDeviceID=NULL;                             //打开设备成功以后保存这个设备号备用
UINT rs;                                                 //接受函数返回结果
rs=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT ,(DWORD)&op);//发送命令打开设备,成功返回0,否则返回错误号,第三个参数这里必须是MCI_OPEN_ELEMENT 
if(rs==0)             //设备打开成功就播放文件
{
   MCI_PLAY_PARMS pp;
   pp.dwCallback=NULL;
   pp.dwFrom=0;                       //开始播放的位置
   mciSendCommand(op.wDeviceID,MCI_PLAY,MCI_WAIT,(DWORD)&pp);//播放文件,如果第 三个参数设为MCI_WAIT则程序窗口会被阻塞,为了避免这种情况可以设为MCI_NOTIFY ,这两个标志的详细区别请见MSDN,区别不小哦。
最后别望了在WM_CLOSE消息处理过程中发送MCI_CLOSE命令关闭设备,写成这样:

MCI_GENERIC_PARMS gp;
gp.dwCallback=NULL;
mciSendCommand(op.wDeviceID,MCI_CLOSE,MCI_WAIT,(DWORD)&gp);

最后别忘了在工程属性的link属性页里加入winmm.lib链接,也不要忘了#include <mmsystem.h>

 



版权所有!www.sieye.cn
E.Mail:sieye@sohu.com QQ:66697110