Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////////////
- //**************************************************//
- //****************Copyright(c)2007******************//
- //**********Borland Developer Studio 2006***********//
- //******************Otto �abart*********************//
- //*******************FreeWare***********************//
- //**************************************************//
- //////////////////////////////////////////////////////
- unit saplayer_system;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ExtCtrls, MPlayer, ComCtrls, Gauges, ShellAPI, IniFiles,
- Menus, MMSystem, Buttons;
- //...Ru�n� p�idat: ShellAPI, IniFiles, MPlayer
- type
- TForm1 = class(TForm)
- OpenDialog1: TOpenDialog;
- Timer1: TTimer;
- CheckBox1: TCheckBox;
- TrayIcon1: TTrayIcon;
- PopupMenu1: TPopupMenu;
- Zobrazitpehrva1: TMenuItem;
- Exit1: TMenuItem;
- StaticText1: TStaticText;
- Timer2: TTimer;
- ScrollBar1: TScrollBar;
- ProgressBar1: TProgressBar;
- Label2: TLabel;
- Label3: TLabel;
- BitBtn2: TBitBtn;
- BitBtn3: TBitBtn;
- BitBtn4: TBitBtn;
- BitBtn5: TBitBtn;
- Button1: TButton;
- PopupMenu2: TPopupMenu;
- Pehrt1: TMenuItem;
- Pozastavit1: TMenuItem;
- Zastavit1: TMenuItem;
- Otevt1: TMenuItem;
- N1: TMenuItem;
- Panel1: TPanel;
- Timer3: TTimer;
- Label1: TLabel;
- Bevel1: TBevel;
- procedure Timer3Timer(Sender: TObject);
- procedure N1Click(Sender: TObject);
- procedure Otevt1Click(Sender: TObject);
- procedure Zastavit1Click(Sender: TObject);
- procedure Pozastavit1Click(Sender: TObject);
- procedure Pehrt1Click(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure BitBtn5Click(Sender: TObject);
- procedure BitBtn4Click(Sender: TObject);
- procedure BitBtn2Click(Sender: TObject);
- procedure BitBtn3Click(Sender: TObject);
- procedure Label2Click(Sender: TObject);
- procedure ProgressBar1MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure ProgressBar1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure ScrollBar1Change(Sender: TObject);
- procedure Timer2Timer(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure FormCreate(Sender: TObject);
- procedure Exit1Click(Sender: TObject);
- procedure Zobrazitpehrva1Click(Sender: TObject);
- procedure TrayIcon1Click(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- function SetWaveVolume(volume: DWord): Dword;
- function SetMidiVolume(volume: DWord): Dword;
- procedure WMSysCommand(var Msg: TWMSysCommand);
- message WM_SYSCOMMAND;
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- times: String;
- MediaPlayer1: TMediaPlayer;
- implementation
- uses about_system;
- {$R *.dfm}
- procedure TForm1.FormCreate(Sender: TObject);
- var
- Ini: TIniFile;
- begin
- MediaPlayer1:= TMediaPlayer.Create(Form1); //...Vytvo�� komponentu TMediaPlayer
- MediaPlayer1.Parent:= Form1; //...Bude um�st�n� na komponent� Form1
- MediaPlayer1.Visible:= False; //...A nebude vid�t
- if ParamCount = 1 then //...Jestli p�ehr�va� najde parametr, vlo�� ho jako FileName p�ehr�va�i a za�ne p�ehr�vat
- begin
- MediaPlayer1.FileName:= (ParamStr(1));
- MediaPlayer1.Open;
- BitBtn3.Click;
- Label1.Caption:= ExtractFileName((ParamStr(1)));
- if Length(ExtractFileName((ParamStr(1)))) > 38 then
- begin
- Label1.Left:= Panel1.Width;
- Timer3.Enabled:= True;
- end else
- begin
- Label1.Left:= 0;
- Timer3.Enabled:= False;
- end;
- end;
- Ini:= TIniFile.Create(ChangeFileExt(Application.ExeName,'_options.INI')); //...Pokud u� byl vytvo�en .INI soub., p�e�te z n�j hodnoty a na�te je do p�ehr�va�e
- try
- Form1.Top:= Ini.ReadInteger('Form1', 'Top', 76); //...P�e�te hodnoty Form1
- Form1.Left:= Ini.ReadInteger('Form1', 'Left', 395);
- CheckBox1.Checked:= Ini.ReadBool('CheckBox1', 'Checked', True); //...A taky hodnotu CheckBoxu1
- ScrollBar1.Position:= Ini.ReadInteger('ScrollBar1', 'Position', 255) //...A ScrollBaru1
- finally
- Ini.Free; //...Uvoln� .INI soub. z pam�ti
- end;
- end;
- procedure TForm1.BitBtn2Click(Sender: TObject);
- begin
- MediaPlayer1.Pause; //...Pauzne p�ehr�va�
- BitBtn3.Enabled:= True; //...Aktivuje tla��tko play
- Label3.Caption:= 'Pozastaveno'; //...D� v�d�t �e je zapauzov�no
- PopupMenu2.Items[0].Enabled:= True;
- if Label3.Font.Color = clRed then //...Label3 ozna�� barvou, aby to u�ivatel l�pe poznal
- begin
- Label3.Font.Color:= clNavy;
- Label3.Caption:= 'P�ehr�v�n�';
- end else
- Label3.Font.Color:= clRed;
- end;
- procedure TForm1.BitBtn3Click(Sender: TObject);
- begin
- MediaPlayer1.Play; //...P�ehr�va� za�ne p�ehr�vat
- BitBtn2.Enabled:= True; //...Deaktivuje tla��tko stop
- BitBtn4.Enabled:= True; //...A tak� tla��tko pause
- PopupMenu2.Items[0].Enabled:= False;
- PopupMenu2.Items[1].Enabled:= True;
- PopupMenu2.Items[2].Enabled:= True;
- Timer1.Enabled:= True; //...Zapne timer (for ProgressBar1)
- Timer2.Enabled:= True; //...Zapne timer (ukazov�n� stavu p�sni�ky v minut�ch)
- ProgressBar1.Min:= 0; //...Nastav� minim�ln� hodnotu ProgressBaru na 0
- ProgressBar1.Max:= MediaPlayer1.Length; //...Maxim�ln� hodnota ProgressBaru = D�lce p�ehr�van� souboru v MediaPlayeru
- ProgressBar1.Position:= MediaPlayer1.Position; //...Pozice ProgressBaru = pozici MediaPlayeru
- Label3.Caption:= 'P�ehr�v�n�';
- if Label3.Font.Color = clRed then //...Jestli je barva Label3 �erven�, zm�n� ji na �ernou
- Label3.Font.Color:= clBlack;
- end;
- procedure TForm1.BitBtn4Click(Sender: TObject);
- begin
- Application.ProcessMessages;
- MediaPlayer1.Stop; //...Zastav� p�ehr�va�
- MediaPlayer1.Position:= 0; //...Nastav� pozici p�ehr�va�e na 0
- MediaPlayer1.Close; //...Zav�e p�ehr�va�
- BitBtn2.Enabled:= False; //...Deaktivace tla��tek: BitBtn2
- BitBtn3.Enabled:= False; //...BitBtn3
- BitBtn4.Enabled:= False; //...BitBtn4
- PopupMenu2.Items[0].Enabled:= False;
- PopupMenu2.Items[1].Enabled:= False;
- PopupMenu2.Items[2].Enabled:= False;
- Timer1.Enabled:= False; //...Zastav� timer
- Timer2.Enabled:= False; //...Zastav� druh� timer
- StaticText1.Caption:= '00:00'; //...Vynuluje se StaticText1
- ProgressBar1.Position:= 0; //...Pozice ProgressBaru se nastav� na 0
- Label1.Caption:= '��dn� soubor nen� na�ten';
- Label3.Caption:= 'Zastaveno'; //...D� u�ivateli v�d�t �e je p�ehr�va� zastaven
- if Label3.Font.Color = clRed then //...Jestli je barva Label3 �erven�, zm�n� ji na �ernou
- Label3.Font.Color:= clBlack;
- if Length(ExtractFileName(OpenDialog1.Filename)) > 38 then
- begin
- Label1.Left:= Panel1.Width;
- Timer3.Enabled:= True;
- end else
- begin
- Label1.Left:= 0;
- Timer3.Enabled:= False;
- end;
- end;
- procedure TForm1.BitBtn5Click(Sender: TObject);
- begin
- if OpenDialog1.Execute then //...Otev�e Dialog
- begin
- Application.ProcessMessages;
- MediaPlayer1.FileName:= OpenDialog1.FileName;
- if not FileExists(OpenDialog1.FileName) then
- begin
- ShowMessage('MP3 file '+#13#10+ OpenDialog1.FileName +#13#10+'does not exist!');
- Exit;
- end;
- MediaPlayer1.Open; //...Otev�e p�ehr�va�
- BitBtn3.Click; //...Aktivuje proceduru tla��tka BitBtn3, a t�m p�dem za�ne p�ehr�vat
- Label1.Caption:= ExtractFileName(MediaPlayer1.FileName); //...Do label1 nap��e n�zev p�sni�ky
- end;
- if Length(ExtractFileName(OpenDialog1.Filename)) > 38 then
- begin
- Label1.Left:= Panel1.Width;
- Timer3.Enabled:= True;
- end else
- begin
- Label1.Left:= 0;
- Timer3.Enabled:= False;
- end;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- if Form2.Visible = False then //...Pokud je Form2 neviditeln�, nastav� mu viditelnost na True
- Form2.Visible:= True
- else
- Form2.Visible:= False; //...Jestli vid�t je, shov� ho
- end;
- procedure TForm1.Exit1Click(Sender: TObject);
- begin
- Application.Terminate; //...Aplikace se ukon��
- end;
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- var
- Ini: TIniFile;
- begin
- MediaPlayer1.Free; //...Uvoln� p�ehr�va� z pam�ti
- Ini:= TIniFile.Create(ChangeFileExt(Application.ExeName,'_options.INI')); //...Vytvo�� .INI soub. (nebo p�ep��e star�)
- try
- Ini.WriteInteger('Form1', 'Top', Form1.Top); //...Zap��e hodnoty komponent
- Ini.WriteInteger('Form1', 'Left', Form1.Left);
- Ini.WriteBool('CheckBox1', 'Checked', CheckBox1.Checked);
- Ini.WriteInteger('ScrollBar1', 'Position', ScrollBar1.Position);
- finally
- Ini.Free; //...Uvoln� .INI soub. z pam�ti
- end;
- end;
- procedure TForm1.Label2Click(Sender: TObject);
- var
- MyWin: array[0..255] of Char;
- const
- Size: Integer = MAX_PATH;
- begin
- GetWindowsDirectory(MyWin, Size); //...Cesta do C:\WINDOWS\system32
- ShellExecute(Form1.Handle, 'open', 'sndvol32.exe', nil, MyWin, SW_SHOWNORMAL); //...Otev�e v adres��i C:\WINDOWS\system32 soubor s n�zvem sndvol32.exe (Nastaven� zvuku ve Win)
- end;
- procedure TForm1.N1Click(Sender: TObject);
- begin
- Button1.Click;
- end;
- procedure TForm1.Otevt1Click(Sender: TObject);
- begin
- BitBtn5.Click;
- end;
- procedure TForm1.Pehrt1Click(Sender: TObject);
- begin
- BitBtn3.Click;
- end;
- procedure TForm1.Pozastavit1Click(Sender: TObject);
- begin
- BitBtn2.Click;
- end;
- procedure TForm1.ProgressBar1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- var
- f: String;
- begin
- try
- if Button = mbLeft then //...Odchycen� stisknut� lev�ho tla��tka
- begin
- f:= FloatToStr(Int(((MediaPlayer1.Length / (Form1.Width - ProgressBar1.Left - 15) * x)))); //...Vyhodnot�me pozici ProgressBaru
- ProgressBar1.Position:= StrToInt(f); //...Nastav� ProgressBar na pozici kliku
- MediaPlayer1.Position:= StrToInt(f); //...Nastav� P�ehr�va� na vyhodnocenou pozici kliknut�
- MediaPlayer1.Play;
- Label3.Font.Color:= clNavy;
- Label3.Caption:= 'P�ehr�v�n�';
- end;
- except
- Exit;
- end;
- end;
- procedure TForm1.ProgressBar1MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- var
- r: Real;
- begin
- r:= Int(ProgressBar1.Position / ProgressBar1.Max * 100); //...Vyhodnot�me pozici aktu�ln�ho p�ehr�v�n� a p�evedeme na procenta
- ProgressBar1.Hint:= 'Step: ' + FloatToStr(r) + '%'; //...A procenta zobraz�me v popisce
- end;
- procedure TForm1.ScrollBar1Change(Sender: TObject);
- var
- f: Real;
- begin
- SetWaveVolume(ScrollBar1.Position); //...Nastaven� hlasitosti
- SetMidiVolume(ScrollBar1.Position);
- f:= Int(ScrollBar1.Position / ScrollBar1.Max * 100);
- Label2.Caption:= 'Hlasitost: ' + FloatToStr(f) + '%'; //...Nap��eme hlasitost do Label, aby o n� byl u�ivatel informov�n
- end;
- procedure TForm1.Timer1Timer(Sender: TObject);
- begin
- ProgressBar1.Position:= MediaPlayer1.Position; //...Ka�d�ch 0,1s aktualizuje ProgressBar
- if MediaPlayer1.Position = MediaPlayer1.Length then
- begin
- if CheckBox1.Checked = true then //...Pokud je zatrhnuto "opakovat"
- begin
- BitBtn3.Click; //...Za�ne se opakovat procedura tla��tka play a t�m tedy i p�ehr�v�n�
- end else
- begin
- MediaPlayer1.Stop; //...Jinak stopne p�ehr�va�
- BitBtn3.Enabled:= True; //...Deaktivuje tla��tka...
- BitBtn2.Enabled:= False;
- BitBtn4.Enabled:= False;
- end;
- end;
- end;
- procedure TForm1.Timer2Timer(Sender: TObject);
- var
- x, t: Integer;
- min, sec: Integer;
- s1, s2, result: String;
- begin
- if times = '' then //...Ukazuje ve statictext na kolik�t� minut� u� hraje p�sni�ka
- begin
- t:= MediaPlayer1.Position; //...Vyhodnocen� pozice p�ehr�va�e a p�eveden� na minuty a sekundy
- sec:= t div 1000;
- min:= sec div 60;
- sec:= (sec - min * 60);
- if min > 9 then
- s1:= IntToStr(min)
- else
- s1:= '0' + IntToStr(min);
- if sec > 9 then
- s2 := IntToStr(sec)
- else
- s2:= '0' + IntToStr(sec);
- result:= s1 + ':' + s2;
- StaticText1.Caption:= result; //...Zobraz� v�sledek
- end
- else
- begin
- try
- t:= MediaPlayer1.Length - MediaPlayer1.Position;
- sec:= t div 1000;
- min:= sec div 60;
- sec:= (sec - min * 60);
- if min > 9 then
- s1:= IntToStr(min)
- else
- s1:= '0' + IntToStr(min);
- if sec >9 then
- s2:= IntToStr(sec)
- else
- s2:= '0' + IntToStr(sec);
- result:= s1 + ':' + s2;
- StaticText1.Caption:= result;
- except
- end;
- end;
- end;
- procedure TForm1.Timer3Timer(Sender: TObject);
- begin
- Label1.Left:= Label1.Left - 1; //...O kolik pixel� se label posune
- if Label1.Left < -Label1.Width then
- Label1.left:= Panel1.Width;
- end;
- procedure TForm1.TrayIcon1Click(Sender: TObject);
- begin
- Form1.Show; //...Zobraz� Form1
- TrayIcon1.Visible:= False; //...Nastav� ikonce neviditelnost
- end;
- procedure TForm1.Zastavit1Click(Sender: TObject);
- begin
- BitBtn4.Click;
- end;
- procedure TForm1.Zobrazitpehrva1Click(Sender: TObject);
- begin
- Form1.Show;
- end;
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TForm1.SetWaveVolume(volume: DWord): Dword; //...Funkce pro nastaven� Wawe hlasitosti //
- var //
- vol: Integer; //
- MyWaveOutCaps: TWaveOutCaps; //
- begin //
- vol:=(volume)*65537*257; //
- if WaveOutGetDevCaps(WAVE_MAPPER,@MyWaveOutCaps,sizeof(MyWaveOutCaps))=MMSYSERR_NOERROR then //
- begin //
- WaveOutSetVolume(WAVE_MAPPER, MakeLong(vol, vol)); //
- end; //
- end; //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TForm1.SetMidiVolume(volume: DWord): Dword; //...Funkce pro nastaven� Midi hlasitosti //
- var //
- vol: Integer; //
- MyMidiOutCaps: TMidiOutCaps; //
- begin //
- vol:= (volume)*65537*257; //
- if MidiOutGetDevCaps(MIDI_MAPPER,@MyMidiOutCaps,sizeof(MyMidiOutCaps))=MMSYSERR_NOERROR then //
- begin //
- MidiOutSetVolume(Midi_MAPPER, MakeLong(vol, vol)); //
- end; //
- end; //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TForm1.WMSysCommand; //...Procedura pro odchycen� minimalizov�n� okna
- begin
- if (Msg.CmdType = SC_MINIMIZE) then //...Jestli u�ivatel kliknul na tla��tko M�nimalizovat
- begin
- Form1.Hide; //...Formul�� se schov�
- TrayIcon1.Visible:= True; //...Zobraz� se v tray ikonka
- Form2.Visible:= False; //...A pokud byl zobrazen Form2 zapne neviditelnost Formu2
- end
- else
- inherited;
- end;
- end.
Add Comment
Please, Sign In to add comment