新手提问:delphi7.0什么控件可以放midi音乐的?Tserver winsocket怎么用? 有没有Tserver winsocket的控件,在什么位置? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Tserver->File - New - Other system下的 MediaPlayer1,这个太大了一点吧,我就想弄一个小点的,只放midi就可以。谢谢你的关注。 uses MMSystem;PlaySound('MyMid.wav',hInstance,SND_ASYNC or SND_FILENAME);不知道可不可以播放midi文件 我来吧。前几天刚写过的。procedure PlayMidi(FileName:string;ACyc:Boolean); //acyc是是否循环播放begin MidiFileName := FileName; CYC := ACyc; settimer(Application.Handle,MIDITIMER,500,@StatusMidi); //Timer用来轮询midi的播放状态。不然你不知道他是否放完了。 OpenParms.lpstrElementName := PChar(FileName); OpenParms.lpstrDeviceType := 'sequencer'; dwParam := DWord(@openParms); ERROR := mciSendCommand(0, MCI_OPEN,MCI_OPEN_TYPE OR MCI_OPEN_ELEMENT, dwParam); if ERROR <> 0 then begin KillTimer(Application.Handle,MIDITIMER); mciGetErrorString(ERROR, errString, 255); MessageBox(0, ErrString,PChar(SBigError),MB_ICONSTOP or MB_OK); end; mciId := openParms.wDeviceID; ERROR := mciSendCommand(mciId, MCI_PLAY, MCI_NOTIFY, dwParam); if ERROR <> 0 then begin KillTimer(Application.Handle,MIDITIMER); mciGetErrorString(ERROR, errString, 255); MessageBox(0, ErrString,PChar(SBigError),MB_ICONSTOP or MB_OK); end;end;procedure StatusMidi; //检查MIDI播放状态var StatusParm: TMCI_Status_Parms; FFlags : LongInt; begin FFlags := mci_Wait OR mci_Status_Item; StatusParm.dwItem := mci_Status_Mode; Error := mciSendCommand(MCIID, mci_Status, FFlags, LongInt(@StatusParm)); // 526:Playing 525:Stopped if StatusParm.dwReturn = 525 then begin StopMidi; if Cyc then PlayMidi(MidiFileName,Cyc); end;END; procedure StopMidi; //这是停止begin KillTimer(Application.Handle, MIDITIMER); ERROR := mciSendCommand(mciId, MCI_CLOSE, 0, 0); { if ERROR <> 0 then begin mciGetErrorString(ERROR, errString, 255); Label1.Caption := 'MCI_CLOSE: ' + errString; end else begin Label1.Caption := 'MCI_CLOSE ausgeführt'; END; }END; 声明忘了写给你 Cyc :boolean; ERROR : MCIERROR; errString : ARRAY[0..255] OF CHAR; MCIID : MCIDEVICEID; dwParam : DWord; openParms : TMCI_OPEN_PARMS; MidiFileName :String; Delphi 怎么实现抓取摄像头的图片??? delphi提交网面参数? 关于数据填充的问题。。各位帮帮忙吧,谢谢了 出错了,写的程序打不开 如何在读写大文件时(一般容量在300M 以上)中断它的操作! 对数据库的连接 delphi socket客户端,在非继承TForm的类里面怎么开发,好像不能用TClientSocket控件 怎么在dbgid里显示query查出的值的一部分?? dbgrid显示查询结果的问题 各位高手,一个获取Dbgrid行列的问题!! TADOTable组件过滤显示 菜鸟急求!救命啊!!!
->
File - New - Other
下的 MediaPlayer1,这个太大了一点吧,我就想弄一个小点的,只放midi就可以。谢谢你的关注。
PlaySound('MyMid.wav',hInstance,SND_ASYNC or SND_FILENAME);
不知道可不可以播放midi文件
begin
MidiFileName := FileName;
CYC := ACyc;
settimer(Application.Handle,MIDITIMER,500,@StatusMidi); //Timer用来轮询midi的播放状态。不然你不知道他是否放完了。
OpenParms.lpstrElementName := PChar(FileName);
OpenParms.lpstrDeviceType := 'sequencer';
dwParam := DWord(@openParms);
ERROR := mciSendCommand(0, MCI_OPEN,MCI_OPEN_TYPE OR MCI_OPEN_ELEMENT, dwParam);
if ERROR <> 0 then
begin
KillTimer(Application.Handle,MIDITIMER);
mciGetErrorString(ERROR, errString, 255);
MessageBox(0, ErrString,PChar(SBigError),MB_ICONSTOP or MB_OK);
end; mciId := openParms.wDeviceID;
ERROR := mciSendCommand(mciId, MCI_PLAY, MCI_NOTIFY, dwParam);
if ERROR <> 0 then
begin
KillTimer(Application.Handle,MIDITIMER);
mciGetErrorString(ERROR, errString, 255);
MessageBox(0, ErrString,PChar(SBigError),MB_ICONSTOP or MB_OK);
end;
end;procedure StatusMidi; //检查MIDI播放状态
var
StatusParm: TMCI_Status_Parms;
FFlags : LongInt;
begin
FFlags := mci_Wait OR mci_Status_Item;
StatusParm.dwItem := mci_Status_Mode;
Error := mciSendCommand(MCIID, mci_Status, FFlags, LongInt(@StatusParm));
// 526:Playing 525:Stopped
if StatusParm.dwReturn = 525 then
begin
StopMidi;
if Cyc then PlayMidi(MidiFileName,Cyc);
end;
END; procedure StopMidi; //这是停止
begin
KillTimer(Application.Handle, MIDITIMER);
ERROR := mciSendCommand(mciId, MCI_CLOSE, 0, 0);
{ if ERROR <> 0 then
begin
mciGetErrorString(ERROR, errString, 255);
Label1.Caption := 'MCI_CLOSE: ' + errString;
end
else begin
Label1.Caption := 'MCI_CLOSE ausgeführt';
END; }
END;
ERROR : MCIERROR;
errString : ARRAY[0..255] OF CHAR;
MCIID : MCIDEVICEID;
dwParam : DWord;
openParms : TMCI_OPEN_PARMS;
MidiFileName :String;