多媒体编译出错问题。 尝试用mediaplayer组件制作一个播放器,编译后提示 EMCIDeviceError with message 'No MCI device Open'请问这是什么原因造成的,怎么才能解决这个问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没遇到过,下面是我在书上找到的一个例子,编译通过,你试试。unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, MPlayer, Buttons, ExtCtrls, Menus, ToolWin, ComCtrls, StdCtrls; const modestr:array [Tmpmodes] of string=('未就绪','已停止','正播放','正录音','正搜寻','暂停','打开');type TForm1 = class(TForm) StatusBar2: TStatusBar; Panel1: TPanel; SpeedButton1: TSpeedButton; MediaPlayer1: TMediaPlayer; MainMenu1: TMainMenu; file1: TMenuItem; help1: TMenuItem; open1: TMenuItem; exit1: TMenuItem; N1: TMenuItem; Timer1: TTimer; TrackBar1: TTrackBar; OpenDialog1: TOpenDialog; about1: TMenuItem; Edit1: TEdit; procedure open1Click(Sender: TObject); procedure exit1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure MediaPlayer1PostClick(Sender: TObject; Button: TMPBtnType); procedure about1Click(Sender: TObject); private cantimerautochange:boolean; cantrackmanualchange:boolean; { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.open1Click(Sender: TObject);begin if opendialog1.Execute then begin mediaplayer1.filename:=opendialog1.FileName; mediaplayer1.Open; statusbar2.Panels[0].Text:=extractfilename(opendialog1.FileName); mediaplayer1.Notify:=true; end; cantimerautochange:=true;end;procedure TForm1.exit1Click(Sender: TObject);begin mediaplayer1.Close; close;end;procedure TForm1.Timer1Timer(Sender: TObject);var pos:longint;begin if (mediaplayer1.filename<>'') and cantimerautochange then begin cantrackmanualchange:=false; pos:=mediaplayer1.Position*(trackbar1.Max-trackbar1.Min); trackbar1.Position:=(pos div mediaplayer1.Length); cantrackmanualchange:=true; end;end;procedure TForm1.FormCreate(Sender: TObject);begin cantimerautochange:=false; mediaplayer1.TimeFormat:=tfhms;end;procedure TForm1.TrackBar1Change(Sender: TObject);begin cantimerautochange:=false; if cantrackmanualchange then mediaplayer1.Position:=((trackbar1.Position+trackbar1.Frequency)*mediaplayer1.Length) div (trackbar1.Max-trackbar1.Min); mediaplayer1.Play; cantimerautochange:=true;end;procedure TForm1.MediaPlayer1PostClick(Sender: TObject; Button: TMPBtnType);begin statusbar2.Panels[1].Text:=modestr[mediaplayer1.mode];end;procedure TForm1.about1Click(Sender: TObject);begin showmessage('you are using mediaplayer');end;end. 其实播放音乐只需要下面两句就可以了,请注意这两句:mediaplayer1.filename:=opendialog1.FileName;mediaplayer1.Open;//如果你写成mediaplayer1.play就会出现'No MCI device Open'的错误提示。 1、同tjff2000(fengyun) 2、你没有声卡 CSDN怎么回事啊??下载积分乱扣? 各位认为这种需求用什么第三方控件比较好呢? 新手上路,请多关照:关于Pagecontrol的简单问题 现在还学delphi呀? 如下定义接口和控件中使用接口是什么意思?接口应怎样使用?为什么我的控件使用接口后不能接收到鼠标消息,而别的使用这接口控件却将本应 推荐一个编程入门网站,www.vczx.com 怎样分割Wave文件 如何提高自己的等级? 窗品融合的使用问题 预祝郎兄考试顺利!!! 解码的问题 求购函数
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
MPlayer, Buttons, ExtCtrls, Menus, ToolWin, ComCtrls, StdCtrls;
const
modestr:array [Tmpmodes] of string=('未就绪','已停止','正播放','正录音','正搜寻','暂停','打开');type
TForm1 = class(TForm)
StatusBar2: TStatusBar;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
MediaPlayer1: TMediaPlayer;
MainMenu1: TMainMenu;
file1: TMenuItem;
help1: TMenuItem;
open1: TMenuItem;
exit1: TMenuItem;
N1: TMenuItem;
Timer1: TTimer;
TrackBar1: TTrackBar;
OpenDialog1: TOpenDialog;
about1: TMenuItem;
Edit1: TEdit;
procedure open1Click(Sender: TObject);
procedure exit1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure MediaPlayer1PostClick(Sender: TObject; Button: TMPBtnType);
procedure about1Click(Sender: TObject);
private
cantimerautochange:boolean;
cantrackmanualchange:boolean;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
implementation{$R *.DFM}procedure TForm1.open1Click(Sender: TObject);
begin
if opendialog1.Execute then
begin
mediaplayer1.filename:=opendialog1.FileName;
mediaplayer1.Open;
statusbar2.Panels[0].Text:=extractfilename(opendialog1.FileName);
mediaplayer1.Notify:=true;
end;
cantimerautochange:=true;
end;procedure TForm1.exit1Click(Sender: TObject);
begin
mediaplayer1.Close;
close;
end;procedure TForm1.Timer1Timer(Sender: TObject);
var pos:longint;
begin
if (mediaplayer1.filename<>'') and cantimerautochange then
begin
cantrackmanualchange:=false;
pos:=mediaplayer1.Position*(trackbar1.Max-trackbar1.Min);
trackbar1.Position:=(pos div mediaplayer1.Length);
cantrackmanualchange:=true;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
cantimerautochange:=false;
mediaplayer1.TimeFormat:=tfhms;
end;procedure TForm1.TrackBar1Change(Sender: TObject);
begin
cantimerautochange:=false;
if cantrackmanualchange then
mediaplayer1.Position:=((trackbar1.Position+trackbar1.Frequency)*mediaplayer1.Length) div (trackbar1.Max-trackbar1.Min);
mediaplayer1.Play;
cantimerautochange:=true;
end;procedure TForm1.MediaPlayer1PostClick(Sender: TObject;
Button: TMPBtnType);
begin
statusbar2.Panels[1].Text:=modestr[mediaplayer1.mode];
end;procedure TForm1.about1Click(Sender: TObject);
begin
showmessage('you are using mediaplayer');
end;
end.
mediaplayer1.filename:=opendialog1.FileName;
mediaplayer1.Open;//如果你写成mediaplayer1.play就会出现'No MCI device Open'的错误提示。
2、你没有声卡