尝试用mediaplayer组件制作一个播放器,编译后提示 EMCIDeviceError with message 'No MCI device Open'请问这是什么原因造成的,怎么才能解决这个问题。

解决方案 »

  1.   

    没遇到过,下面是我在书上找到的一个例子,编译通过,你试试。
    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.
      

  2.   

    其实播放音乐只需要下面两句就可以了,请注意这两句:
    mediaplayer1.filename:=opendialog1.FileName;
    mediaplayer1.Open;//如果你写成mediaplayer1.play就会出现'No MCI device Open'的错误提示。
      

  3.   

    1、同tjff2000(fengyun) 
    2、你没有声卡