唱完了吗? (C#MCI)

时间:2010-03-19 02:35:32

标签: c# winforms command next mci

我有一个MP3播放器发送MCI命令来播放暂停/ ff / rw /停止音频文件等,我唯一想不通的是发送MCI命令告诉它播放下一个当前一首歌完成播放时的歌曲。

歌曲位于ListBox中。我实际上选择下一首歌没有问题,我只需要找 来播放播放列表中的下一首歌。我很感激任何帮助

谢谢:)

2 个答案:

答案 0 :(得分:5)

很抱歉在一个月左右之后将其疏通,但我我可能会有更好的答案......

你可以用秒来做长度的事情,或者你可以让MCI通知你自己。

当你发送“play”命令时,在媒体的别名后点击“notify”,然后传递你的窗口的句柄(我使用System.Windows.Forms,因此'this.Handle'),就像这样:

uint playOk = mciSendString("play MediaFile notify", null, 0, this.Handle);

告诉MCI在命令完成或中断时向您发送通知。然后你可以过滤你的窗口收到的消息,看看你感兴趣的是否有任何问题:

private const int MM_MCINOTIFY = 0x03b9;
private const int MCI_NOTIFY_SUCCESS = 0x01;    
private const int MCI_NOTIFY_SUPERSEDED = 0x02;
private const int MCI_NOTIFY_ABORTED = 0x04;
private const int MCI_NOTIFY_FAILURE = 0x08;

protected override void WndProc(ref Message m)
{
  if (m.Msg == MM_MCINOTIFY)
  {
    switch (m.WParam.ToInt32())
    {
      case MCI_NOTIFY_SUCCESS:
        // success handling
        break;
      case MCI_NOTIFY_SUPERSEDED:
        // superseded handling
        break;
      case MCI_NOTIFY_ABORTED:
        // abort handling
        break;
      case MCI_NOTIFY_FAILURE:
        // failure! handling
        break;
      default:
        // haha
        break;
    }
  }
  base.WndProc(ref m);
}

这似乎对我来说很好。我希望这有帮助。 ;)

答案 1 :(得分:1)

你能检查mp3的持续时间并在mp3播放的同时保持一个计时器吗?当mp3暂停等时暂停计时器。当播放歌曲的持续时间时,播放下一首歌曲。