⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 基于delphi媒体播放器的源代码 很全面
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, XPMan, MPlayer, ExtCtrls, ComCtrls, Gauges,
  Menus, ColorGrd, ActnList, Grids, DBGrids, CheckLst,pubunit,mmsystem,
  jpeg, ImgList,shellapi;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    StatusBar1: TStatusBar;
    XPManifest1: TXPManifest;
    OpenDialog1: TOpenDialog;
    MediaPlayer1: TMediaPlayer;
    Panel1: TPanel;
    jindu: TGauge;
    Label1: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn3: TBitBtn;
    PopupMenu1: TPopupMenu;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    loop: TBitBtn;
    TrackBar1: TTrackBar;
    Label2: TLabel;
    memo1nul: TPopupMenu;
    CheckListBox1: TCheckListBox;
    tiaoxingopen: TBitBtn;
    Edit1: TEdit;
    Edit2: TEdit;
    BitBtn5: TBitBtn;
    BitBtn10: TBitBtn;
    Timer1: TTimer;
    next: TBitBtn;
    last: TBitBtn;
    tiaoxingclo: TBitBtn;
    N1: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    ImageList1: TImageList;
    Image1: TImage;
    N2: TMenuItem;
    shipin: TBitBtn;
    N19: TMenuItem;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn10Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure tiaoxingopenClick(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure CheckListBox1DblClick(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure  time;
    procedure Timer1Timer(Sender: TObject);
    procedure time2;
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure loopClick(Sender: TObject);
    procedure play();
    procedure tiaoxingcloClick(Sender: TObject);
    procedure lastClick(Sender: TObject);
    procedure nextClick(Sender: TObject);
    procedure form3mp3();
    procedure N17Click(Sender: TObject);
    procedure N18Click(Sender: TObject);
    procedure N15Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N14Click(Sender: TObject);
    procedure shipinClick(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure DragFileProc(var Message: TMessage);
    procedure CheckListBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormShow(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N16Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn9Click(Sender: TObject);
  private
    { Private declarations }
    procedure wmgetminmaxinfo(var msg:Twmgetminmaxinfo); message wm_getminmaxinfo;
    procedure wmhotkey(var msg:Twmhotkey);message wm_hotkey;
  public
    opentag:Boolean;
    tloop:Boolean;
    rando:Boolean;
    { Public declarations }
  end;

var
  Form1: TForm1;
  OLDWndProc: TWndMethod;
  tend:integer;
  tlen:integer;
  ts:string;
  fshi:Boolean;
  mpg:Boolean;
  id:integer;


implementation


uses shezhi,boxing,shipinunit,msgunit4,small,guanyu,bangzhu,unit9;

{$R *.dfm}
        function pvInitMp3(hInstance, hWnd, DisplayW, DisplayH, bands: integer): integer; stdcall; external 'pvmp3.dll';
        //free. MUST call this before exit
        procedure pvFreeMp3; stdcall; external 'pvmp3.dll';
        //get the frequence and length of mp3
        procedure pvGetMp3Info(pFileName: PChar; pFreq, pLen: pointer); stdcall; external 'pvmp3.dll';
        //play mp3
        function pvPlayMp3(pFileName: PChar): integer; stdcall; external 'pvmp3.dll';
        //stop mp3
        procedure pvStopMp3; stdcall; external 'pvmp3.dll';
        //pasue mp3
        procedure pvPauseMp3; stdcall; external 'pvmp3.dll';
        //resume mp3
        procedure pvResumeMp3; stdcall; external 'pvmp3.dll';

procedure tform1.wmhotkey(var msg:Twmhotkey);
begin
form1.Visible:=true;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
  MediaPlayer1.FileName:=OpenDialog1.FileName;
  form1.play;
  opentag:=true;
  CheckListBox1.Items.Add(OpenDialog1.FileName);
  CheckListBox1.Items.SaveToFile(ExtractFileDir(Application.ExeName)+'\mplay.dll');
  CheckListBox1.ItemIndex:=CheckListBox1.ItemIndex+1;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
const
  vk_R=82;
begin
form1.Left:=GetSystemMetrics(sm_cxscreen)div 2 - 190;
form1.Top:=GetSystemMetrics(sm_cyscreen)div 2 - 184;
DragAcceptFiles(form1.CheckListBox1.Handle, True);
OLDWndProc:=form1.CheckListBox1.WindowProc;
form1.CheckListBox1.WindowProc:=DragFileProc;
rando:=false;
tend:=0;
tloop:=false;
MediaPlayer1.Hide;
BitBtn5.Visible:=false;
tiaoxingclo.Visible:=false;
shipin.Caption:='视'+#13+'频'+#13+'播'+#13'放';
try
  CheckListBox1.Items.LoadFromFile(ExtractFileDir(Application.ExeName)+'\mplay.dll');
Except
  begin
    Form4.Label1.Caption:='所需要的文件不存在! ';
    form4.ShowModal;
  end;
end;
if CheckListBox1.Count<>0 then
begin
CheckListBox1.ItemIndex:=0;
end;
if GlobalFindAtom('myhotkey')=0 then
  begin
    id:=GlobalAddAtom('myhotkey');
    RegisterHotKey(handle,id,MOD_ALT,vk_R);
  end
else
  Halt;
end;

procedure TForm1.BitBtn10Click(Sender: TObject);
begin
form2.Show;
BitBtn5.Visible:=true;
BitBtn10.Visible:=false;
n6.Checked:=true;
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
form2.Close;
BitBtn10.Visible:=true;
BitBtn5.Visible:=false;
n6.Checked:=false;
end;

procedure TForm1.tiaoxingopenClick(Sender: TObject);
begin
  form3.Show;
  tiaoxingopen.Visible:=false;
  tiaoxingclo.Visible:=true;
  n5.Checked:=true;
end;

procedure TForm1.BitBtn6Click(Sender: TObject);    //添加文件
var
  count:integer;
begin
OpenDialog1.Options:=[ofHideReadOnly,ofEnableSizing,ofallowmultiselect];
if OpenDialog1.Execute then
begin
 for count:=0 to OpenDialog1.Files.Count-1 do       //打开多个文件
   begin
     if (pos('.mp3',OpenDialog1.Files.Strings[count])<>0)or(pos('.wma',OpenDialog1.Files.Strings[count])<>0)or(pos('.mid',OpenDialog1.Files.Strings[count])<>0) or(pos('.wav',OpenDialog1.Files.Strings[count])<>0)or(pos('.MP3',OpenDialog1.Files.Strings[count])<>0)or(pos('.WMA',OpenDialog1.Files.Strings[count])<>0)or(pos('.MID',OpenDialog1.Files.Strings[count])<>0) or(pos('.WAV',OpenDialog1.Files.Strings[count])<>0) then
       begin
         CheckListBox1.Items.Add(OpenDialog1.Files.Strings[count]);
         CheckListBox1.Items.SaveToFile(ExtractFileDir(application.ExeName)+'\mplay.dll');
       end;
   end;
 end
else 
OpenDialog1.Options:=[ofHideReadOnly,ofEnableSizing];
OpenDialog1.Options:=[ofHideReadOnly,ofEnableSizing];
CheckListBox1.SetFocus;
CheckListBox1.ItemIndex:=CheckListBox1.ItemIndex+1;
end;


procedure TForm1.BitBtn7Click(Sender: TObject);   //删除文件
var
  jlindex:integer;
begin
jlindex:=CheckListBox1.ItemIndex;
CheckListBox1.DeleteSelected;
CheckListBox1.SetFocus;
if jlindex<CheckListBox1.Count-1  then
CheckListBox1.ItemIndex:=jlindex
else
CheckListBox1.ItemIndex:=CheckListBox1.Count-1;
CheckListBox1.Items.SaveToFile(ExtractFileDir(application.ExeName)+'\mplay.dll');
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
try
  if form2.TrackBar1.Position<13 then
      SetWaveLeft(TrackBar1.Position div 13)
  else if Form2.TrackBar1.Position>13 then
      SetWaveRigth(TrackBar1.Position div 13)
  else
  SetWaveBalance(TrackBar1.Position div 13);
Except
  begin
    abort;
  end;
end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if BitBtn3.Font.Color<>clred then
 begin
      if CheckListBox1.Count<>0 then
        begin
          MediaPlayer1.FileName:=CheckListBox1.Items.Strings[integer(CheckListBox1.ItemIndex)];
            try
              form3mp3;
              Timer1.Enabled:=true;
              BitBtn2.Font.Color:=clred;
            except
              abort;
            end;
          end
      else
        begin
              Form4.Label1.Caption:='没有播放文件! ';
              form4.ShowModal;
          abort;
        end;
    end
else
  begin
if mpg=true then
  begin
  MediaPlayer1.Play ;
  BitBtn2.Font.Color:=clred;
  BitBtn3.Font.Color:=clteal;
  end
else
  begin
    if fshi=true then
      pvResumeMp3
    else
    MediaPlayer1.Play;
    opentag:=true;
    timer1.Enabled:=true;
    BitBtn3.Font.Color:=clTeal;
    BitBtn2.Font.Color:=clred;
  end;
  end;
end;

procedure TForm1.CheckListBox1DblClick(Sender: TObject);
begin
MediaPlayer1.FileName:=CheckListBox1.Items.Strings[integer(CheckListBox1.ItemIndex)];
form3mp3;
Timer1.Enabled:=true;
end;


procedure TForm1.BitBtn3Click(Sender: TObject);   //暂停
begin
if opentag=true then
  begin
  if (pos('.wma',MediaPlayer1.FileName)<>0)or(pos('.mid',MediaPlayer1.FileName)<>0)or(pos('.mpg',MediaPlayer1.FileName)<>0)or(pos('.WMA',MediaPlayer1.FileName)<>0)or(pos('.MID',MediaPlayer1.FileName)<>0)or(pos('.MPG',MediaPlayer1.FileName)<>0)or(pos('.avi',MediaPlayer1.FileName)<>0)or(pos('.AVI',MediaPlayer1.FileName)<>0)then
    MediaPlayer1.Stop
  else
    pvPauseMp3;
    Timer1.Enabled:=false;
    BitBtn3.Font.Color:=clred;
    BitBtn2.Font.Color:=clTeal;
  end;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
if opentag=true then
  begin
    opentag:=false;
    edit1.Text:='00:00:00';
    jindu.Progress:=0;
    tend:=0;
    time2;
    if fshi=false then
      MediaPlayer1.Close
    else
      begin
      pvStopMp3;
      end;
    BitBtn2.Font.Color:=clTeal;
    BitBtn3.Font.Color:=clTeal;
    Timer1.Enabled:=false;
    MediaPlayer1.FileName:='';
  end
else
  begin
    abort;
  end;
end;

procedure tform1.time;
var
  fre:integer;
begin
  mpg:=false;
  tend:=0;
  try
    jindu.Progress:=0;
    if fshi=false then
      begin
        tlen:=MediaPlayer1.Length;
        tlen:=tlen div 1000;
      end
    else
      begin
        pvGetMp3Info(pchar(MediaPlayer1.FileName),@fre,@tlen);
      end;
    ts:=GetStringFromFrame(tlen*25);
    SetLength(ts,length(ts)-3);
    edit1.Text:=ts;
    jindu.MaxValue:=tlen;
    if tlen=0 then
      begin
      CheckListBox1.DeleteSelected;
      CheckListBox1.Items.SaveToFile(ExtractFileDir(application.ExeName)+'\mplay.dll');
      end;
  except
    begin
          Form4.Label1.Caption:='播放文件时发生错误! ';
          form4.ShowModal;
      MediaPlayer1.FileName:='';
      MediaPlayer1.Close;
      edit1.Text:='00:00:00';
      jindu.Progress:=0;
      Timer1.Enabled:=false;
      tend:=0;
      time2;
      abort;
    end;
  end;
end;





procedure TForm1.Timer1Timer(Sender: TObject);
var
  atitle:string;
begin
if tend<>tlen then
  begin
    tend:=tend+1;
    jindu.Progress:=jindu.Progress+1;
    time2;
    if pos('music',Application.Title)<>0 then
      begin
        atitle:=Application.Title;
        Delete(atitle,1,5);
        Application.Title:=atitle;
      end
    else
      begin
        atitle:=Application.Title;
        Insert('music',atitle,1);
        Application.Title:=atitle;
      end;
  end
else
begin
    time2;
    if rando<>true then
        begin
          if CheckListBox1.Count<>0 then
             begin
               if CheckListBox1.ItemIndex=CheckListBox1.Count-1 then
                  begin
                    if tloop=true then
                       begin
                         Timer1.Enabled:=false;
                         CheckListBox1.ItemIndex:=0;
                         MediaPlayer1.FileName:=CheckListBox1.Items.Strings[integer(CheckListBox1.ItemIndex)] ;
                         form3mp3;
                         Timer1.Enabled:=true;
                       end
                   else
                     begin
                        Timer1.Enabled:=false;
                        edit1.Text:='00:00:00';
                        jindu.Progress:=0;
                        tend:=0;
                        time2;
                        if fshi=false then
                          begin
                            MediaPlayer1.Stop;
                             MediaPlayer1.Close;
                          end
                        else
                           pvStopMp3;
                        MediaPlayer1.FileName:='';
                     end
                  end
                else
                  begin
                    CheckListBox1.ItemIndex:=CheckListBox1.ItemIndex+1;
                    MediaPlayer1.FileName:=CheckListBox1.Items.Strings[integer(CheckListBox1.ItemIndex)];
                    form3mp3;
                    Timer1.Enabled:=true;
                  end;
             end
          else
            begin
               form4.Label1.Caption:='没有播放文件! ';
                        timer1.Enabled:=false;
                        edit1.Text:='00:00:00';
                        jindu.Progress:=0;
                        tend:=0;
                        time2;
                        if fshi=false then
                          begin
                            MediaPlayer1.Stop;
                             MediaPlayer1.Close;
                          end
                        else
                           pvStopMp3;
                        MediaPlayer1.FileName:='';
                              form4.ShowModal;         
            end;
         end
    else
  begin
    if CheckListBox1.Count<>0 then
      begin
        Timer1.Enabled:=false;
        CheckListBox1.ItemIndex:=random(CheckListBox1.Count-2)+1;
        MediaPlayer1.FileName:=CheckListBox1.Items.Strings[integer(CheckListBox1.ItemIndex)] ;
        form3mp3;
        Timer1.Enabled:=true;
      end
    else
      begin
        form4.Label1.Caption:='没有播放文件! ';

                          Timer1.Enabled:=false;
                        edit1.Text:='00:00:00';
                        jindu.Progress:=0;
                        tend:=0;
                        time2;
                        if fshi=false then
                          begin
                            MediaPlayer1.Stop;
                             MediaPlayer1.Close;
                          end
                        else
                           pvStopMp3;
                        MediaPlayer1.FileName:='';
        form4.ShowModal;
      end;
    end;
end;
end;







procedure tform1.time2;                //将秒数转换成时间格式显示

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -