Du kanst Dir von Windows eine Nachricht schicken lassen, wenn das Stück zu Ende ist:
Delphi-Quellcode:
// zuerst MidiFile öffnen (mit Alias)
mciSendString(PChar('
open "'+MidiFile+'
" alias mymidi'),
nil,0,0);
// dann abspielen (mit Notify)
mciSendString('
play mymidi from 0 notify',
nil,0,
Handle);
Durch das 'notify' wird immer dann, wenn das Stück zu Ende ist, eine MM_MCINOTIFY-Nachricht an das angegebene Fenster (
Handle) gesendet. Die muss nur noch ausgewertet werden:
Delphi-Quellcode:
public
...
procedure MidiLoop(
Var Message: TMessage);
message MM_MCINOTIFY;
...
Procedure TForm1.MidiLoop(
Var Message: TMessage);
Begin
mciSendString('
play mymidi from 0 notify',
nil,0,
Handle);
// und neu abspielen
End;
Sollte noch das einfachste sein...
Gruß, teebee