唱完了吗?(C#MCI)

1 c# command next mci winforms

我有一个MP3播放器发送MCI命令来播放暂停/ ff/rw /停止音频文件等,唯一我无法弄清楚怎么办是发送一个MCI命令告诉它播放下一首歌时目前一个人已经完成了比赛.

歌曲在ListBox中.我没有问题,实际上选择下一首歌曲,我只需要找出播放下一首歌曲的播放列表.我会感激任何帮助

谢谢 :)

Guy*_*Guy 5

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

您可以在几秒钟内完成长度,或者您可以让MCI通知您自己.

当你把你的"播放"命令,粘性的"通知"对媒体的别名后,再通过你的窗口的句柄(我使用System.Windows.Forms的,因此"this.Handle"),就像这样:

uint playOk = mciSendString("play MediaFile notify", null, 0, this.Handle);
Run Code Online (Sandbox Code Playgroud)

这告诉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);
}
Run Code Online (Sandbox Code Playgroud)

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