3

オーディオファイルなどを再生するためにMCIコマンドを送信するmp3プレーヤーがありますが、方法がわからないのは、MCIコマンドを送信して次の曲を再生するように指示することだけです。現在の人は演奏を終了しました。

曲はリストボックスにあります。実際に次の曲を選択するのに問題はありません。プレイリストで次の曲をいつ再生するかを確認する必要があります。助けていただければ幸いです

ありがとうございました :)

4

2 に答える 2

7

1か月かそこら後にこれを浚渫して申し訳ありませんが、もっと良い答えがあると思います...

長さを秒単位で指定するか、MCI に通知してもらうことができます。

「再生」コマンドを送信するときは、メディアのエイリアスの後に「通知」を追加してから、ウィンドウのハンドルを渡します (私は 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);
}

これは私にとってはうまく機能しているようです。これが役立つことを願っています。;)

于 2010-04-06T15:05:29.627 に答える
1

mp3の長さを確認し、mp3の再生と並行してタイマーを維持できますか?mp3が一時停止しているときなど、タイマーを一時停止します。曲の長さが再生されたら、次の曲を再生します。

于 2010-03-19T02:41:55.423 に答える