很抱歉在一个月左右之后将其疏通,但我想我可能会有更好的答案......
您可以在几秒钟内完成长度,或者您可以让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)
这似乎对我来说很好.我希望这有帮助.;)