我正在使用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”事件中询问“MediaPlayer.NotifyValue”属性的“nvSuccessful”值。 – TLama
试试这个:WMPlayer1.uiMode:='none'; – slotomo