Песня закончилась? (C # MCI) - PullRequest
1 голос
/ 19 марта 2010

У меня есть mp3-плеер, который отправляет команды MCI для воспроизведения pause / ff / rw / stop аудио файлов и т. Д., И единственное, что я не могу понять, как это сделать, - это отправить команду MCI, чтобы сказать ей, чтобы она воспроизводилапесня по окончании воспроизведения текущей.

Песни находятся в ListBox.У меня нет проблем с выбором следующей песни, мне просто нужно узнать , когда , чтобы воспроизвести следующую песню в списке воспроизведения.Буду признателен за любую помощь

Спасибо:)

Ответы [ 2 ]

5 голосов
/ 06 апреля 2010

Извините, что уточнил это примерно через месяц, но я думаю У меня может быть более хороший ответ ...

Вы можете указать длину в секундах или 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 голос
/ 19 марта 2010

Можете ли вы проверить длительность mp3 и установить таймер на время воспроизведения mp3? Приостановите таймер, когда воспроизведение mp3 приостановлено, и т. Д. По окончании воспроизведения песни воспроизведите следующую песню.

...