📄 main.~pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, MPlayer, ExtCtrls, Buttons, Grids, Menus,MMSystem
,ShellAPI,FileCtrl,StrUtils, ExtDlgs,jpeg, ValEdit,IMCode,DateUtils,Media
,Registry,Math, IdGlobal; //XPMenu
Const APP_TITLE='超级播放器';
const MyIcoMes=WM_USER+90;
const MediaAliasName='MyMp3';
Const TempMedia='TempMp3';
const ModeStr:array[TMPModes] of string=('未准备.', '已停止.', '正在播放...'
, '记录中...', '搜索中...', '暂停中...', '已打开.');
const SIG_MYFILE = 'XWWang';
const k:array [TMPDeviceTypes] of string =('dtAutoSelect', 'dtAVIVideo', 'dtCDAudio'
, 'dtDAT', 'dtDigitalVideo', 'dtMMMovie', 'dtOther', 'dtOverlay', 'dtScanner'
, 'dtSequencer', 'dtVCR', 'dtVideodisc', 'dtWaveAudio');
type
HMSRec = record
Hours: byte;
Minutes: byte;
Seconds: byte;
NotUsed: byte;
end;
TID3Tag=Record
ID:string[3];
Title:string[30];
Artist:string[30];
Album:string[30];
Year:string[4];
Comment:string[30];
Genre:byte;
end;
{
TID3Tag=Record
ID:array[0..2] of char;
Title:array[0..29] of char;
Artist:array[0..29] of char;
Album:array[0..29] of char;
Year:array[0..3] of char;
Comment:array[0..29] of char;
Genre:byte;
end;
}
TID3Tag2=Packed Record
ID:array[0..2] of char;
Title:array[0..29] of char;
Artist:array[0..29] of char;
Album:array[0..29] of char;
Year:array[0..3] of char;
Comment:array[0..29] of char;
Genre:byte;
end;
TplayerState=(psPlaying,psPaused,psStopped,psClosed);
TMainFrm = class(TForm)
OpenDialog1: TOpenDialog;
PopupMenu1: TPopupMenu;
ReloadMusicInfoMnu: TMenuItem;
TitleBar: TLabel;
SpeedButton2: TSpeedButton;
SpeedButton1: TSpeedButton;
TitleSign: TLabel;
Label2: TLabel;
MoveTitle: TLabel;
PopupMenu2: TPopupMenu;
mnuShowPlaytime: TMenuItem;
mnuShowlesttime: TMenuItem;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N31: TMenuItem;
PopupMenu3: TPopupMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem5: TMenuItem;
N21: TMenuItem;
PopupMenu5: TPopupMenu;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
PopupMenu6: TPopupMenu;
mnuPlyOrder: TMenuItem;
mnuPlyRand: TMenuItem;
mnuPlyRepeat: TMenuItem;
mnuPlyNone: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
main_pop: TPopupMenu;
pop_Show: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
PlayOrderLbl: TLabel;
Label6: TLabel;
bar: TImage;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
playBtn: TSpeedButton;
pauseBtn: TSpeedButton;
stopBtn: TSpeedButton;
prevBtn: TSpeedButton;
NextBtn: TSpeedButton;
BackBtn: TSpeedButton;
StepBtn: TSpeedButton;
EjectBtn: TSpeedButton;
dot: TImage;
Voltimer: TTimer;
N32: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
EditMnu: TMenuItem;
N24: TMenuItem;
viewMenu: TMenuItem;
N25: TMenuItem;
PopupMenu8: TPopupMenu;
MnuAddDir: TMenuItem;
MnuAddFiles: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
N20: TMenuItem;
N26: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
mnuMoveItem: TMenuItem;
Panel7: TPanel;
Image1: TImage;
Label13: TLabel;
Panel8: TPanel;
Image2: TImage;
Label14: TLabel;
lblTime: TLabel;
Panel6: TPanel;
lbSoundLR: TLabel;
big1: TSpeedButton;
big2: TSpeedButton;
Image3: TImage;
SpeedButton4: TSpeedButton;
Notebook1: TNotebook;
ListBox1: TListBox;
SpeedButton5: TSpeedButton;
PopupMenu9: TPopupMenu;
N110: TMenuItem;
N210: TMenuItem;
backimg: TImage;
Bevel2: TBevel;
Bevel3: TBevel;
Bevel7: TBevel;
Bevel4: TBevel;
Bevel5: TBevel;
Bevel1: TBevel;
LoadSBtn: TSpeedButton;
addSBtn: TSpeedButton;
delSBtn: TSpeedButton;
SaveSBtn: TSpeedButton;
MoveItemSBtn: TSpeedButton;
LblSelSong: TLabel;
PYEdit: TEdit;
Bevel8: TBevel;
Bevel9: TBevel;
OpenPicDlg: TOpenPictureDialog;
MnuSetBackimg: TMenuItem;
SpeedButton6: TSpeedButton;
SortSBtn: TSpeedButton;
ProgressBar1: TProgressBar;
PopupMenu10: TPopupMenu;
N4: TMenuItem;
N33: TMenuItem;
Bevel10: TBevel;
ErrLb: TLabel;
belTitle: TBevel;
mnuAbout: TMenuItem;
mnuOnTop: TMenuItem;
Timer2: TTimer;
ModeString: TLabel;
selitem: TLabel;
regisyslb: TLabel;
LbBack: TLabel;
mnulistBack: TMenuItem;
showLyricEditorSbtn: TSpeedButton;
mnuLyricBox: TMenuItem;
Bevel11: TBevel;
Panel4: TPanel;
sglist: TStringGrid;
ScrollBarPnl: TPanel;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
N5: TMenuItem;
N6: TMenuItem;
N22: TMenuItem;
Bevel12: TBevel;
Label1: TLabel;
Panel2: TPanel;
VolLbl: TLabel;
VolImg: TImage;
Timer1: TTimer;
N23: TMenuItem;
menu1: TMenuItem;
menu2: TMenuItem;
menu3: TMenuItem;
menu4: TMenuItem;
menu5: TMenuItem;
menu6: TMenuItem;
menu7: TMenuItem;
menu8: TMenuItem;
menu9: TMenuItem;
menu10: TMenuItem;
menu11: TMenuItem;
HideColGrid: TStringGrid;
AudioFTList: TListBox;
VideoFTList: TListBox;
GenreCmbBox: TComboBox;
procedure MediaPlayer1Notify(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ListBox1DblClick(Sender: TObject);
procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure PausebtnClick(Sender: TObject);
procedure StopBtnClick(Sender: TObject);
procedure PlayBtnClick(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure PrevBtnClick(Sender: TObject);
procedure StepBtnClick(Sender: TObject);
procedure NextBtnClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure addSBtnClick(Sender: TObject);
procedure delSBtnClick(Sender: TObject);
procedure SaveSBtnClick(Sender: TObject);
procedure LoadSBtnClick(Sender: TObject);
procedure ListBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ListBox1KeyPress(Sender: TObject; var Key: Char);
procedure sglistDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure ReloadMusicInfoMnuClick(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure sglistDblClick(Sender: TObject);
procedure sglistKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure TitleBarMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure TitleSignDblClick(Sender: TObject);
procedure mnuShowPlaytimeClick(Sender: TObject);
procedure Label24MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label26MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure N1Click(Sender: TObject);
procedure EjectBtnClick(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure lblTimeClick(Sender: TObject);
procedure lbSoundLRClick(Sender: TObject);
procedure dotMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure dotMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure dotMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure VolImgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure VolLblMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PlayOrderLblClick(Sender: TObject);
procedure mnuPlyOrderClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure pop_ShowClick(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure VoltimerTimer(Sender: TObject);
procedure PYEditChange(Sender: TObject);
procedure PYEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure N21Click(Sender: TObject);
procedure barMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure sglistSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
procedure sglistGetEditText(Sender: TObject; ACol, ARow: Integer;
var Value: String);
procedure N32Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure EditMnuClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Panel6MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MnuAddFilesClick(Sender: TObject);
procedure MnuAddDirClick(Sender: TObject);
procedure mnuMoveItemClick(Sender: TObject);
procedure Label13MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label14MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PlayOrderLblMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PlayOrderLblMouseLeave(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure sglistRowMoved(Sender: TObject; FromIndex, ToIndex: Integer);
procedure N210Click(Sender: TObject);
procedure MnuSetBackimgClick(Sender: TObject);
procedure sglistMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PYEditExit(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure LblSelSongDblClick(Sender: TObject);
procedure mnuOrdbyDirMPClick(Sender: TObject);
procedure mnuOrdbyDirXZClick(Sender: TObject);
procedure SortSBtnClick(Sender: TObject);
procedure sglistTopLeftChanged(Sender: TObject);
procedure mnuAboutClick(Sender: TObject);
procedure mnuOnTopClick(Sender: TObject);
procedure mnulistBackClick(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure SpeedButton5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Shape2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure showLyricEditorSbtnClick(Sender: TObject);
procedure mnuLyricBoxClick(Sender: TObject);
procedure Shape3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure sglistMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Timer1Timer(Sender: TObject);
procedure menu1Click(Sender: TObject);
procedure sglistColumnMoved(Sender: TObject; FromIndex,
ToIndex: Integer);
procedure HideColGridMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure sglistSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure GenreCmbBoxExit(Sender: TObject);
private
{ Private declarations }
Deviceid:integer;
winWidth,winHeight,winLeft,winTop:integer; //拖动改变窗口时
Cur_X,Cur_Y:integer;
GenreNameList:TStringList;
procedure Readlist;
procedure Savelist;
procedure ReadList2;
Procedure Savelist2;
procedure ResetNo(start:integer);
function GetFilename(index:integer):string;
Function Lese_ID3Tag(var ID3Tag:TID3Tag;FileName:string):boolean;
Function Lese_ID3Tag2(var ID3Tag:TID3Tag2;FileName:string):boolean;
procedure updateTimerBar;
procedure IniVolume;
procedure VolumeChg(Sender: TObject);
Function Addfile(filename:string):integer;
procedure setfileattr(filename:string;fileattr:word;addattr:boolean);
function searchpath(path:string;vStrs:TStrings;includeSubDir:boolean):Boolean;
procedure WMMOVE(var Msg: TMessage); message WM_MOVE;
function GetCurLyric(var LyricStr:string; MPos:Longint):boolean;
function existsAppKey:Boolean;
function GetSysDir: String;
Procedure updateUpDownPos;
function GetGenreName(index:integer):string;
Function GetGenreIndex(GenreName:string):integer;
public
{ Public declarations }
oldval:string;
pressDot,pressDotScroll:boolean;//
filenamechg:boolean;
listChged:boolean;//list内容是否被修改
pd_X:integer;
BeforepressDotState:TplayerState;
playerState:TplayerState ;
playfilename:string;
movePos:integer;
showfilename:string;
openCdDoor:boolean;
linkDisplayScr:integer;//是否吸住播放屏幕 0:没有,1:右上,2:上
playItem:integer;
oldFormHeight:integer; //隐藏清单时的窗体高度
fileOpened:boolean; //是否已打开媒体文件
filelength:longint; //毫秒
framelength:longint;//桢
ListBmp:TBitmap;
HaveLyric:boolean;
Lyric:TStrings;
LyricIndex:integer;
procedure showMode;
// sglistimg:TBitmap;
// procedure WmNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
procedure MyIcoMesDo(var Msg : TMessage);Message MyIcoMes; //托盘图标的返回消息
procedure WMDropFiles(var Msg : TMessage); message WM_DROPFILES; //拖动文件消息
function GetPYIndexChar( hzchar:string):char;
function chintoeng(chinese:string):string;
function GetColIndex(strgrid:Tstringgrid;vTitle:String):integer;
procedure closeMedia;
procedure MoveMedia(toWhere:longint);
function isVideoFile(itemindex:integer):boolean;
procedure readSysInfo;
procedure SaveSysInfo;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -