如题,谢谢

解决方案 »

  1.   

    你用什么控件
    应该有LOOP属性吧
    设为TRUE就得呗
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, MMSystem,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        OpenDialog1: TOpenDialog;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormShow(Sender: TObject);
        procedure Button5Click(Sender: TObject);
      private
        procedure MCINOTIFY(Var Message:TMessage); message MM_MCINOTIFY;
        { Private declarations }
      public
        nowloop:boolean;
        function SendMCIStr(Const Msg:String):PChar;
        { Public declarations }
      end;var
      Form1: TForm1;
      MusicPos:string; 
    implementation{$R *.DFM}
    procedure TForm1.MCINOTIFY(var Message: TMessage);
    begin  if (SendmciStr('Status mid mode')='stopped') then
      begin
        Form1.Caption:='Can play';
     
       
      end
      else
      begin
        Form1.Caption:='Can'''+'t play';
        Sleep(3);
      end;
      if nowloop and (SendmciStr('Status mid mode')='stopped') then
    begin
      sendmcistr('seek mid to start');
      sendmcistr('play mid notify');end;
    end;function TForm1.SendMCIStr(const Msg: String): PChar;
    Var
      Buf:Array[0..128] of Char;    //4096
    begin
      MciSendString(PChar(msg),Buf,sizeof(buf),Handle);
      Result:=Buf;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I:integer;
    begin
      SendMciStr('open '+MusicPos+' alias mid');
      Sendmcistr('play mid notify');
      Nowloop:=true;end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      nowloop:=False;
      mcisendstring('stop mid',nil,0,0);
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      nowloop:=true;
      sendmcistr('play mid notify');
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
      sendmcistr('close mid');
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      button4click(nil);
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      NowLoop:=True;end;procedure TForm1.Button5Click(Sender: TObject);
    begin
      if Opendialog1.Execute then
        MusicPos:=Opendialog1.FileName;
    end;end.
    *.mid,*.wav,格式很灵,*.mp3就不行了,各位知道的帮帮忙
      

  3.   

    哪有那么麻烦吗!看我的:
    procedure TForm1.Timer2Timer(Sender: TObject);
    begin
    temp:=extractfilepath(application.exename)+'ring.wav';
    playsound(pchar(temp),0,SND_ASYNC or SND_LOOP);
    end;
    很简单吧?只有事先把音乐文件拷入EXE文件所在文件夹中。给分吧!
      

  4.   

    楼上兄弟的也可以,我也试过了,但没有播放mid,mp3文件,不知道可不可以用playsound一个毛病就是文件小还可以,大了很耗系统资源所以文件大的就得想其他的办法
      

  5.   

    用TMediaPlayer控件啊,很方便也很简单。
    一条语句即可实现驯化:
    If MediaPlayer1.Position=MediaPlayer1.Length then
     begin
      MediaPlayer1.Rewind;
      MediaPlayer1.Play;
     end;
    这样子就好了,轻松搞定啊.