请问用API函数怎么播放已经存在的MID文件,具体怎么调用?
解决方案 »
- QQ群邮件群发-设计开发
- 用EnumWindows枚举出所有正在运行的窗体后,无法将指定的窗体最大化?
- 报错:Not enough timer availible,怎么回事
- 请高手指点一二.....
- 新装Delphi6后发现控件很少怎么办?
- 梦的启事
- 请问统计字段:TAggregate怎么用,怎么把统计出的值显示在表格里(dbgrideh)
- odbc 問題
- 关于"Explorer要调用的钩子"的再讨论!!wen_zang(文臧)和感兴趣的朋友请看!!
- 朋友发给我的一个培训通知,觉得对大家有用,故拿出来与大家分享
- ADO的效率慢慢降低, newyj(吴刚vs西西弗)..... 等人来取分!
- 谁能帮帮我啊?关于ActiveX Form 发布使用的问题!!!
┏━━━━━━━━━━━━━┓
┃※※※※★★★★★※※※┃
┃※终级掠食者—大白鲨※※┃
┃※※※★★★★★※※※※┃
┗━━━━━━━━━━━━━┛我有自动放分机要吗? 可惜的是BCB专利啊!!!!!!!!!
function SendMciStr(const Msg:String):PChar;
var Buf:Array[0..4095] of Char;
Begin
MciSendString(Pchar(msg),Buf,Sizeof(Buf),Handle);//调用MciSendString
Result:=Buf;
End//调用
SendMciStr('Open c:\some.mid alias mid');//打开MID文件
SendMciStr('Play mid notify');//播放
var
vError: DWORD;
vBuffer: array[0..1024]of Char;
begin
vError := mciSendString('open c:\temp\mas.mid alias mid', nil, 0, 0);
if vError <> 0 then begin
mciGetErrorString(vError, vBuffer, SizeOf(vBuffer));
MessageDlg(vBuffer, mtError, [mbOK], 0);
Exit;
end;
vError := mciSendString('play mid notify', nil, 0, 0);
if vError <> 0 then begin
mciGetErrorString(vError, vBuffer, SizeOf(vBuffer));
MessageDlg(vBuffer, mtError, [mbOK], 0);
Exit;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
vParams: MCI_OPEN_PARMS;
vError: DWORD;
vBuffer: array[0..1024]of Char;
begin
vParams.lpstrDeviceType := PChar(MCI_DEVTYPE_SEQUENCER);
vParams.lpstrElementName := 'c:\temp\mas.mid';
vError := mciSendCommand(0, MCI_OPEN,
MCI_WAIT or MCI_OPEN_ELEMENT or MCI_OPEN_TYPE or MCI_OPEN_TYPE_ID,
DWORD(@vParams));
if vError <> 0 then begin
mciGetErrorString(vError, vBuffer, SizeOf(vBuffer));
MessageDlg(vBuffer, mtError, [mbOK], 0);
Exit;
end;
vError := mciSendCommand(vParams.wDeviceID, MCI_PLAY, MCI_NOTIFY, DWORD(@vParams));
if vError <> 0 then begin
mciGetErrorString(vError, vBuffer, SizeOf(vBuffer));
MessageDlg(vBuffer, mtError, [mbOK], 0);
Exit;
end;
end;