Bạn có thể làm điều đó bằng cách sử dụng các PlayStateChanged event. bạn có thể thêm nó vào MediaPlayer của bạn như thế này.
WMPLib.WindowsMediaPlayer wplayer;
wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(wplayer_PlayStateChange);
wplayer.URL = "c:/Standup.mp3";
wplayer.controls.play();
sau đó bạn có thể kiểm tra sự MediaEnded
PlayState trong EventHandler và đặt lại currentPosition khi bắt đầu bài hát:
void wplayer_PlayStateChange(int NewState)
{
if (NewState == (int)WMPLib.WMPPlayState.wmppsMediaEnded)
{
wplayer.controls.currentPosition = 0;
}
}
Edit: tôi mong đợi để có thể làm cho một bài hát lặp lại đến mức tôi bị bệnh, và đoạn mã trên đã hoạt động khi tôi đã thiết lập các điểm ngắt. Một khi tôi gỡ bỏ chúng tôi thấy có những PlayStates khác đã ngừng các tập tin được chơi. Tôi đã có thể bỏ qua nó bằng cách sử dụng một bộ đếm thời gian quay .. Bây giờ tôi am mệt mỏi của bài hát mà tôi đang sử dụng. Có thể/có thể là một cách tốt hơn để làm điều này, nhưng điều này sẽ làm việc.
Mã Modified
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();
}
}
}
Nguồn
2013-07-15 00:17:48
Tôi thực sự không hiểu rằng link..Pls u có thể cung cấp một ví dụ mã. –
Tôi đã không sử dụng thư viện này, nhưng từ sự hiểu biết của tôi, bạn sẽ có thể sử dụng: wplayer.settings.setMode ("loop", true); hoặc wplayer.settings.setMode ("autoRewind", true); –