Вы можете сделать это с помощью PlayStateChanged event. вы можете добавить его в свой MediaPlayer, как это.
WMPLib.WindowsMediaPlayer wplayer;
wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(wplayer_PlayStateChange);
wplayer.URL = "c:/Standup.mp3";
wplayer.controls.play();
, то вы можете проверить на MediaEnded
PlayState в EventHandler и сброса currentPosition в начале песни:
void wplayer_PlayStateChange(int NewState)
{
if (NewState == (int)WMPLib.WMPPlayState.wmppsMediaEnded)
{
wplayer.controls.currentPosition = 0;
}
}
Edit: я ожидал, чтобы быть в состоянии сделать песню повторяемый до такой степени, что мне это надоело, и приведенный выше код работал, когда у меня были контрольные точки. Как только я их удалил, я обнаружил, что были другие PlayStates, которые останавливали воспроизведение файла. Я смог обойти его, используя таймер с одним выстрелом. Теперь я утра устал от песни, которую я использовал. Там может быть, возможно, лучший способ сделать это, но это сработает.
Модифицированный код
public partial class Form1 : Form
{
WMPLib.WindowsMediaPlayer wplayer;
Timer tmr = new Timer();
public Form1()
{
InitializeComponent();
tmr.Interval = 10;
tmr.Stop();
tmr.Tick += new EventHandler(tmr_Tick);
wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.URL = "c:/Standup.mp3";
wplayer.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(wplayer_PlayStateChange);
wplayer.controls.play();
}
void tmr_Tick(object sender, EventArgs e)
{
tmr.Stop();
wplayer.controls.play();
}
void wplayer_PlayStateChange(int NewState)
{
if (NewState == (int)WMPLib.WMPPlayState.wmppsMediaEnded)
{
tmr.Start();
}
}
}
Я действительно не понимаю, что link..Pls может у пример кода. –
Я не использовал эту библиотеку, но, по моему мнению, вы должны иметь возможность использовать: wplayer.settings.setMode («loop», true); или wplayer.settings.setMode ("autoRewind", true); –