我有一个mp3播放器,发送MCI命令播放暂停/ff/rw/停止音频文件等,唯一我不知道如何做的是发送MCI命令,告诉它播放下一首歌时,当前的一个完成播放。歌曲在列表框中。我没有问题,实际上选择下一首歌,我只需要找出何时播放播放列表上的下一首歌。我会很感激任何帮助Thank you:)
c86crjj01#
很抱歉在一个月左右的时间后挖掘这个,但我 * 想 * 我可能有一个更好的答案…你可以用秒来计算长度,或者你可以让MCI自己通知你。当你发送“播放”命令时,在媒体别名后面加上“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); }
这对我来说似乎很好。希望这能帮上忙。;)
nfs0ujit2#
你能检查mp3的持续时间,并保持一个定时器沿着的mp3播放吗?当MP3暂停时暂停计时器等。播放完歌曲的时长后,播放下一首歌曲。
2条答案
按热度按时间c86crjj01#
很抱歉在一个月左右的时间后挖掘这个,但我 * 想 * 我可能有一个更好的答案…
你可以用秒来计算长度,或者你可以让MCI自己通知你。
当你发送“播放”命令时,在媒体别名后面加上“notify”,然后传递窗口的句柄(我使用的是System.Windows.Forms,因此使用了'this. Handle'),如下所示:
它告诉MCI在命令完成或中断时向您发送通知。然后,你可以过滤窗口收到的消息,看看是否有你感兴趣的消息:
这对我来说似乎很好。希望这能帮上忙。;)
nfs0ujit2#
你能检查mp3的持续时间,并保持一个定时器沿着的mp3播放吗?当MP3暂停时暂停计时器等。播放完歌曲的时长后,播放下一首歌曲。