当前位置:首页 > MCI详解
MCI_WAIT:等待标志,表示在规定操作完成后,再将控制权转交APPLICATION,比如播放AVI 文件完成后,APPLICATION才能获得控制权,但可以用MCI_BREAK来中断. 再说一遍mciSendCommand函数结构:
mciSendCommand(mciID:MCIDEVICEID;uMessage:UINT;dwParam1,dwParam2:DWORD);MCIERROR;stdcall;
mciID:接受命令消息的MCI设备的ID uMessage:命令消息
dwParam1:命令消息标志
dwParam2:指向接收命令消息参数块地址
MCIERROR:返回值,如果为0,表示调用成功,否则失败.获得错误代码后通过
function mciGetErrorString(mcierr:MCIERROR;pszText;Pchar;uLength:UINT):BOOL;stdcall; 其中dwParam1是消息指定标志,dwParam2是消息数据结构 以MCI_OPEN为例,打开Mmsystem.pas文件,找到如下: type
PMCI_Open_ParmsA = ^TMCI_Open_ParmsA; PMCI_Open_ParmsW = ^TMCI_Open_ParmsW; PMCI_Open_Parms = PMCI_Open_ParmsA; {$EXTERNALSYM tagMCI_OPEN_PARMSA} tagMCI_OPEN_PARMSA = record********* dwCallback: DWORD; wDeviceID: MCIDEVICEID; lpstrDeviceType: PAnsiChar; lpstrElementName: PAnsiChar; lpstrAlias: PAnsiChar; end;
{$EXTERNALSYM tagMCI_OPEN_PARMSW} tagMCI_OPEN_PARMSW = record********* dwCallback: DWORD; wDeviceID: MCIDEVICEID; lpstrDeviceType: PWideChar; lpstrElementName: PWideChar; lpstrAlias: PWideChar;
end;
其中可以看出(注意有*的语句),参数是一个记录类型,也就是说dwParam1和dwParam2是两个
记录类型的数据,在使用时赋值要注意类型. 再以MCI_OPEN命令为例,其语法为:
dwReturn:=mciSendCommand(wDeviceID,MCI_OPEN,dwFlags,DWORD(mciOpenParam)); ----------------------------------------------------------- 在var段申明: var
wDeviceID:MCIDEVICEID; //存放设备ID dwReturn:MCIERROR; //存放返回值
mciOpenParam:PMCI_OPEN_PARMS; //MCI_OPEN命令消息的数据结构
----------------------------------------------------------- 在适当位置为mciOpenParam申请空间 new(mciOpenParam); 最后还要释放空间
dispose(mciOpenParam);
-----------------------------------------------------------
为需要在命令消息数据结构中需要的字段赋值, mciOpenParam^.lpstrDeviceType:='cdaudio'; ----------------------------------------------------------- 最后,调用发送函数
dwReturn:=mciSendCommand(0,//打开设备前ID为0 MCI_OPEN, //命令消息
MCI_OPEN_TYPE, //消息标志,表示字段lpstrDeviceType有值 DWORD(mciOpenParam)); //数据结构 dwReturn若为0,表示调用成功. MCI详解[连载五]
MCI命令字符串接口函数
与命令消息方式相似,MCI为发送命令字符串提供了两个函数:] (1) mciSendString
(2) mciExecute
函数(2)是(1)的简化形式,函数(1)返回的错误代码和相应的错误信息与命令消息函数相同. 函数(2)如果出现错误,则以消息框形式提示.
functionmciSendString(lpstrCommand,lpstrReturnString:Pchar; uReturnLength:UINT;hWndCallback:HWND):MCIERROR;stdcall; lpstrCommand:指向以nil结尾的mci命令字符串
lpstrReturnString:返回信息的缓冲区,可以设置成nil,则不返回信息
hWndCallback:接收MM_MCINOTIFY消息的窗口句柄,如果命令包含Notify标志,则此参数必须要
MCIERROR:返回值,为0表示调用成功.错误代码要用函数mciGetErrorString获得错误信息 functionmciExecute(pszCommand:LPCSTR):BOOL;stdcall; 这是函数(1)的简化形式
pszCommand:MCI命令字符串
返回值:返回true,表示调用成功;返回false,则用messagebox显示错误信息 命令字符串语法格式:
commanddevice_name argument command:MCI命令字符串 device_name:设备名或设备元素 argument:命令的标志和参数
标志:由MCI命令支持的关键字组成
参数:标志所带参数
注:argument可以是字符串,带符号的长整数和矩形等数据类型,参数之间用空格隔开. 例1:播放cd,从当前位置播放到10 000ms处停止 playcdaudio to 10000
例2:以别名形式对cdaudio操作
opencdaudio alias cd
play cd stop cd close cd
使用别名的好处:当设备名或元素名较长时,操作起来不方便,就为它指定一个别名, 例如本例就是将设备cdaudio指定一个别名cd,后面就对cd进行操作. MCI详解[连载六]
命令字符串分类:
用mciSendString和mciExecute函数发送的字符串命令分为四大类: 系统命令:由MCI直接解释,不发送给设备. 必需命令:所有设备都支持. 基本命令:设备对这些命令可选. 扩充命令:仅适用于某些设备. 字符串命令表
类别命令名功能
系统命令 break 中止,放弃wait
sound 播放windows声音(win.ini文件中[Sound]段) sysinfo获取MCI系统信息
必需命令 capability 获取设备性能信息 close 关闭设备
info 获取设备型号,厂家等信息 open 初始化 status 状态信息
基本命令 load 载入设备元素 pause 暂停 play 播放 record 录制
resume 恢复暂停 save 存盘
seek 在媒体内定位 set 设置
status 获取设备状态信息 stop 停止播放或录制 命令字符串举例:
(用于mciSendString发送) capabilitymysound device type //返回\的设备类型 closemysound
//关闭\设备 configureavi
//打开AVI播放设备对话框 cuemysound input
//为录制准备设备\deletemysound from 1 to 900
//删除波形音频1到900ms之间的数据
infomysound product
//取回与\相关的硬件描述
open new type waveaudio alias mysound buffer 6
//打开\设备,mysound是别名,缓冲区为6秒 pausemysound
//暂停\设备
playmysound from 1 to 500 notify(wait)
//播放\从位置1到500,播放后发送通知消息(notify)或播放时等待(wait) realizemyvideo normal
//告诉\设备实现它的调色板 recordmysound //从当前位置开始录制 resumemysound //恢复暂停
savevboard c:\\v1.tga
//将视频缓冲区的内容存入v1.tga中 seekmysound to start
//定位到\相关文件的开始 statusmysound mode
//返回\当前模式 step movie by 5
//从当前帧开始播放5帧 stopmysound
//停止播放或录制
共分享92篇相关文档