В примере AVI файл проигрывается снова и снова - используем событие MediaPlayer'а Notify

 

 

Code:

Procedure TForm1.Timer1Timer(Sender: TObject);

Var

TheLength,Posi,SummaMin,SummaSec: Integer;

begin

//Progress Bar to check if the track is playing

if Progress.Max<>0 then Begin

   Progress.Position := Mediaplayer1.Position;

 

    //Gets the length of the selected track

   TheLength := Mediaplayer1.TrackLength[ListBox1.ItemIndex];

 

     //gets the current position of the track

     Posi := Mediaplayer1.Position;

 

     //Caculates Minutes

     SummaMin := ((TheLength - Posi) div 1000) Div 60;

 

     //Calculates Seconds

     SummaSec := ((TheLength - Posi) Div 1000) Mod 60;

 

     //Adds zero if Seconds are less then ten

     If SummaSec < 10 Then

     Label2.Caption := '0' + IntToStr(SummaSec)

     Else

     Label2.Caption := IntToStr(SummaSec);

 

     //Minutes

     Label1.Caption := IntToStr(SummaMin);

 

End;

 

 

Code:

uses

  MPlayer, MMSystem;

 

const

  MCI_SETAUDIO = $0873;

  MCI_DGV_SETAUDIO_VOLUME = $4002;

  MCI_DGV_SETAUDIO_ITEM = $00800000;

  MCI_DGV_SETAUDIO_VALUE = $01000000;

  MCI_DGV_STATUS_VOLUME = $4019;

 

type

  MCI_DGV_SETAUDIO_PARMS = record

    dwCallback: DWORD;

    dwItem: DWORD;

    dwValue: DWORD;

    dwOver: DWORD;

    lpstrAlgorithm: PChar;

    lpstrQuality: PChar;

  end;

 

type

  MCI_STATUS_PARMS = record

    dwCallback: DWORD;

    dwReturn: DWORD;

    dwItem: DWORD;

    dwTrack: DWORD;

  end;

 

procedure SetMPVolume(MP: TMediaPlayer; Volume: Integer);

  { Volume: 0 - 1000 }

var

  p: MCI_DGV_SETAUDIO_PARMS;

begin

  { Volume: 0 - 1000 }

  p.dwCallback := 0;

  p.dwItem := MCI_DGV_SETAUDIO_VOLUME;

  p.dwValue := Volume;

  p.dwOver := 0;

  p.lpstrAlgorithm := nil;

  p.lpstrQuality := nil;

  mciSendCommand(MP.DeviceID, MCI_SETAUDIO,

    MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p));

end;

 

function GetMPVolume(MP: TMediaPlayer): Integer;

var

   p: MCI_STATUS_PARMS;

begin

  p.dwCallback := 0;

  p.dwItem := MCI_DGV_STATUS_VOLUME;

  mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p));

  Result := p.dwReturn;

  { Volume: 0 - 1000 }

end;

 

// Example, Beispiel:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  SetMPVolume(MediaPlayer1, 500);

end;

 

Обратите внимание, что уведомить сбрасывает значение false. когда  событие уведомлению, так заказов мои для вас, чтобы получить

 далее уведомлять события, вы должны установить его обратно в true, как в коде.  о доступных режимах см. файл справки для MediaPlayer.Mode;