MP3播放器
基本要求:
1.能播放指定的MP3音乐文件。
2.显示播放文件的信息及播放进度。
3.播放进度可以拖动。
4.可以播放多个文件。(播放列表)
哪位大侠能帮我解决这个难题(对我而言)啊!谢了!!把代码放到这上面就可以了!!好心人帮帮忙哦!!

解决方案 »

  1.   


    MP3播放器源码
    http://www.codefans.net/download/10/200810/MP3player.rar
      

  2.   

    下个 BASS 库的引擎,里面的有最最简单的 DEMO
      

  3.   

    不用baidu不用google用bing搜索一下
      

  4.   

    许多的控件都可以的,WMP是最简单的
      

  5.   

    本人写出来了,给你代码,希望你有一个结贴的好习惯
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, MPlayer, ExtCtrls, StdCtrls, ComCtrls,mmsystem;type
      TForm1 = class(TForm)
        lb: TListBox;
        Timer1: TTimer;
        mp: TMediaPlayer;
        pp: TPopupMenu;
        N1: TMenuItem;
        od: TOpenDialog;
        N2: TMenuItem;
        N3: TMenuItem;
        Label1: TLabel;
        Label2: TLabel;
        tb: TTrackBar;
        Timer2: TTimer;
        CheckBox1: TCheckBox;
        Timer3: TTimer;
        Label3: TLabel;
        Label4: TLabel;
        Label8: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        procedure FormDblClick(Sender: TObject);
        procedure N1Click(Sender: TObject);
        procedure lbDblClick(Sender: TObject);
        procedure N2Click(Sender: TObject);
        procedure N3Click(Sender: TObject);
        procedure mpNotify(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure CheckBox1Click(Sender: TObject);
        procedure Timer3Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}function ZeroFill(Size: Integer; s: string): string;
    var
      a, b: Integer;
      t: string;
    begin
      SetLength(t, Size);
      for a := 1 to Size do
        t[a] := '0';
      b := Size;
      for a := Length(s) downto 1 do
      begin
        t[b] := s[a];
        Dec(b); //自减函数 b=b-1
      end;
      ZeroFill := t;
    end;function fsize( s: string): string;
    const
     Mb= 1024*1024;
    var
      f: file of byte;
      ii:longint;
    begin
      assignfile(f,s);
      reset(f);
       if Filesize(f)>=MB then
          result:=Format('%.2f MB',[Filesize(f)/Mb])
       Else
          result:=Format('%.2f KB',[Filesize(f)/1024]);
     closefile(f);
    end;procedure TForm1.FormDblClick(Sender: TObject);
     var
     xx:tpoint;
    begin
      GetCursorPos(xx);
      pp.Popup(xx.X,xx.y);
    end;procedure TForm1.N1Click(Sender: TObject);
    var
    i:integer;
    begin
    od.Options := [ofHideReadOnly,ofEnableSizing,ofAllowMultiSelect];
    if od.Execute then
      begin
      for i:=0 to od.Files.Count-1 do
       begin
        lb.Items.Add(od.Files.Strings[i]);
       end;
      end;
    end;procedure TForm1.lbDblClick(Sender: TObject);
    begin
      mp.FileName :=lb.Items.Strings[lb.Itemindex];
      label2.Caption :=extractfilename(mp.FileName);
      label7.Caption := fsize(mp.FileName);
      mp.Open;
      mp.Play;
        tb.Min:=0;
      tb.Max:=mp.Length div 1000;
      
      Timer2.Enabled :=true;
    end;procedure TForm1.N2Click(Sender: TObject);
    begin
     mp.Notify :=true;
     N2.Checked :=true;
     n3.Checked :=false;
    end;procedure TForm1.N3Click(Sender: TObject);
    begin
      mp.Notify :=false;
      N2.Checked :=false;
     n3.Checked :=true;
     //Timer1.Enabled :=true;end;procedure TForm1.mpNotify(Sender: TObject);
     var
      i:integer;
    begin tb.Position :=0;
       if mp.Position=mp.Length  then
         begin
         if  N2.Checked =true then
         begin
          for i:=0 to lb.Count -1 do
          begin
            if mp.FileName =lb.Items.Strings[i] then
             begin
              lb.ItemIndex :=i;
              break;
             end;
          end;
          if lb.itemindex<lb.Count -1 then
          begin
           mp.FileName :=lb.Items.Strings[lb.Itemindex+1];
           lb.ItemIndex :=lb.Itemindex+1;
           label2.Caption :=extractfilename(mp.FileName);
           mp.Open;
           mp.Play;
           label7.Caption := fsize(mp.FileName);
                 tb.Max:=mp.Length div 1000;
          tb.Min:=0;
          Timer2.Enabled :=true;
          end
         else
          begin
           mp.FileName :=lb.Items.Strings[0];
           lb.ItemIndex :=0;
           label2.Caption :=extractfilename(mp.FileName);
           mp.Open;
           mp.Play;      tb.Max:=mp.Length div 1000;
          tb.Min:=0;      Timer2.Enabled :=true;
         label7.Caption := fsize(mp.FileName);
         end;
         end;
          end;
    end;procedure TForm1.Timer2Timer(Sender: TObject);
    begin   tb.Position := mp.Position  div 1000 ;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    //..
    end;procedure TForm1.CheckBox1Click(Sender: TObject);
    var
      v: longint;begin
      if CheckBox1.Checked =true then
      begin
           v := (0 shl 8) or (0 shl 24);
           waveOutSetVolume(0, v);
      end
      else
      begin
          v := (255 shl 8) or (255 shl 24);
          waveOutSetVolume(0, v);
      end;
    end;procedure TForm1.Timer3Timer(Sender: TObject);
    begin
      with mp do
        if mode in [mpplaying] then
        begin
          tb.Max := mp.Length div 1000;
          label3.Caption  := ZeroFill(2, IntToStr(tb.max div 60))
            + ':' + ZeroFill(2, IntToStr(tb.max mod 60)) + '    ';      tb.Position := Position div 1000;
         label5.Caption:= ZeroFill(2, IntToStr(tb.Position div 60))
            + ':' + ZeroFill(2, IntToStr(tb.Position mod 60));
        end;
    end;end.
      

  6.   

    去年写了一个 基于bass的
    可以去万一老师的博客园bolg上看看
    那里实现了基本mp3的全部功能
      

  7.   

    说句题外话,楼主长的很像超级丹说句题外话, 请好心人帮忙做个ERP,我想要能卖钱的源码,好心人放上来就行