Also mit dem Abtesten von Position und Länge klappt es gut, wobei ich mir immer noch nicht erklären kann, weshalb mbStopped nicht funktioniert. Macht - aus meiner Sicht - ja das Gleiche. Also nur der Vollständigkeit halber:
Delphi-Quellcode:
procedure TMediaForm.FormCreate(Sender: TObject);
begin
MPlayer.Notify:= True;
MPlayer.OnNotify:= NotifyProc;
end;
procedure TMediaForm.FormShow(Sender: TObject);
begin
MPlayer.FileName:= 'd:\applause.wav';
MPlayer.Open;
MPlayer.Play;
end;
procedure TMediaForm.NotifyProc(Sender: TObject);
begin
with Sender as TMediaPlayer do
begin
if MPLayer.Position= MPlayer.Length then
begin
MediaForm.Close;
MainForm.Enabled:= true;
end;
Notify:= True;
end;
Notify := True;
end;
end;
procedure TMediaForm.BtnStopClick(Sender: TObject);
begin
MPlayer.Stop;
Close;
end;
Das MPlayer.Close musste ich zweimal entfernen, da es jeweils einen MCI-Error produziert hat. Aber so wie oben funktioniert es. Danke.