做播放软件,打开时提示:No MCI device open,请问是怎么回事?(20分)

  • 主题发起人 主题发起人 孤云
  • 开始时间 开始时间

孤云

Unregistered / Unconfirmed
GUEST, unregistred user!
按书上的例子做播放软件,部分代码:
//trackbar1的onchange事件,控制媒体播放位置和播放的进度
procedure TForm1.TrackBar1Change(Sender: TObject);
begin

timer1.Enabled:=false;
mediaplayer1.Stop;
//停止播放
mediaplayer1.Position:=trackbar1.Position;//将媒体位置设置为拖动的位置
mediaplayer1.Play;
//继续从当前位置播放
timer1.Enabled:=true;

end;


//媒体组件的onclick事件
procedure TForm1.MediaPlayer1Click(Sender: TObject;
Button: TMPBtnType;
vardo
Default: Boolean);
begin

label2.Caption:=mediaplayer1.FileName;//显示媒体名称
mediaplayer1.Notify:=true;
//触发onnotify事件
mediaplayer1.DisplayRect:=panel2.ClientRect;
//将媒体在display对象的全屏播放
end;



//系统音量控制
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin

self.SpeedButton1.Down:=true;
//按钮设置为按下状态
//realaudio1.SetVolume(0);
//静音,0代表静音
end;


//添加媒体文件
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin

if opendialog1.Execute then

begin

//将打开的媒体文件加载到媒体播放组件
mediaplayer1.FileName:=opendialog1.FileName;
end;


end;


//onnotify事件监控,当媒体停止播放时,重新开始播放
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin

if mediaplayer1.Notify and (mediaplayer1.Mode=mpstopped) then

begin

mediaplayer1.Stop;
mediaplayer1.Rewind;//将媒体回执到开始位置
mediaplayer1.Play;
//继续播放
end;

end;


procedure TForm1.FormCreate(Sender: TObject);
begin

mediaplayer1.TimeFormat:=tfmilliseconds;//设置媒体时间格式以毫秒为单位
end;


打开文件后就出错,提示:No MCI device open
 
在可执行程序同一目录下,放一个很小的.wav文件,比如名称为temp.wav
procedure initialdevice;
var
mainpath:string;
begin

mainpath:=ExtractFilePath(Application.ExeName);
MediaPlayer1.FileName:=mainpath+'temp.wav';
MediaPlayer1.Open;
Mediaplayer1.EnabledButtons:=[btPlay];
end;

将initialdevice放到窗体的show事件中,就没问题了。
 
程序没有什么问题,应当是Windows系统的问题吧。系统中是否缺少或者丢失了某个/些DLL文件?如mciqtz32.dll等。
 
谢谢 锲而不舍
我在FormCreate加入
procedure TForm1.FormCreate(Sender: TObject);
begin

MediaPlayer1.Close;
MediaPlayer1.FileName:=ExtractFilePath(Application.ExeName)+'speedis.avi';
MediaPlayer1.AutoOpen:=True;
MediaPlayer1.Open;
mediaplayer1.TimeFormat:=tfmilliseconds;//设置媒体时间格式以毫秒为单位
end;

还有一个问题就是打开其它的播放文件,点play按钮,就只有speedis.avi在那不断的重复播放,搞不懂是怎么回事
 
procedure TF_Main.MediaPlayer1Click(Sender: TObject;
Button: TMPBtnType;
vardo
Default: Boolean);
begin

case Button of
btplay:
begin

mediaplayer1.Close ;
mediaplayer1.FileName:=OpenDialog1.filename;
mediaplayer1.Open ;
Mediaplayer1.EnabledButtons:=[btPause,btStop,btNext,btPrev];
end;

end;

end;
 
谢谢!
可以了
还想问一个问题,为什么不能播放RMVB格式的文件?
 
接受答案了.
 

Similar threads

I
回复
0
查看
740
import
I
I
回复
0
查看
719
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部