📄 unit1.pas
字号:
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 + -