Я использую TWindowsMediaPlayer и сталкиваюсь с проблемой. После того, как текущая песня завершится, я не могу загрузить ее, чтобы загрузить новую песню, а затем воспроизвести ее.Как заставить TWindowsMediaPlayer играть новый трек после завершения старого?
procedure TMainWinForm.WMPlayer1PlayStateChange(Sender: TObject;
NewState: Integer);
begin
if (NewState = wmppsMediaEnded) then
begin
WMPlayer1.URL := FileScanner.SelectSong;
writeln('Play triggered on ', String(WMPlayer1.URL));
WMPlayer1.controls.Play; // DOES NOT PLAY THE SONG!
end;
end;
Это загружает песню, но для ее воспроизведения требуется дополнительное вмешательство пользователя. Единственный способ, котор я получаю его продолжать для того чтобы проверить для wmppsStopped, но это случаем происходит дважды поэтому я получаю каждую нечетную пронумерованную песню в списке.
Любые идеи о том, как заставить его работать правильно?
@JerryDodge, если я не получаю лучший ответ я вероятно, попробуйте сделать внешнюю переменную и протестировать ее, чтобы она не срабатывала во второй раз с помощью wmppsStopped. Как ни странно, вот откуда берутся большинство моих SO-вопросов. Старые проекты я застрял и убрал, но хочу закончить сейчас. – Glenn1234
Я не совсем уверен (и не могу проверить это сейчас), но, как указано в ссылке, ['MM_MCINOTIFY'] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd757358 (v = vs.85) .aspx) сообщение должно быть отправлено в элемент управления с флагом 'MCI_NOTIFY_SUCCESSFUL', когда действие для команды завершается. Там они заявили, что, например, для аудио CD это означает, что он заканчивает игру. Попробуйте спросить в событии 'OnNotify' значение' nvSuccessful' свойства MediaPlayer.NotifyValue. – TLama
Попробуйте следующее: WMPlayer1.uiMode: = 'none'; – slotomo