2017-02-18 6 views
0

Я использую плейлист axWindowsMediaPlayer, и у вас есть некоторые проблемы - после того, как один конец видео - следующий, без паузы. Я не могу остановиться или остановить его даже сaxWindowsMediaPlayer playlist pause (C#)

private void axWindowsMediaPlayer1_MediaChange(object sender, AxWMPLib._WMPOCXEvents_MediaChangeEvent e) 
    { 

     if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded) 
     {axWindowsMediaPlayer1.Ctlcontrols.pause(); }} 

Это не делает ничего, но необходимо остановить игрока. Что я могу сделать с этим? Или даже отключите AUTOplaying следующий файл списка воспроизведения, это будет еще лучше. Thx много за помощь!

+0

WMP непостоянный, такие события «прогресса изменились» (PlayStateChange) предназначены только для обновления собственного пользовательского интерфейса. Вы не можете использовать их для изменения состояния проигрывателя. Вы должны выполнить команду позже, после того, как событие вернется. Тривиально сделано, например, в приложении Winforms, используя метод BeginInvoke() формы. –

ответ

0

Я считаю, что вы должны работать с объектом, переданным в метод и дополнительно PlayStateChange события, как так:

private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) 
{ 
    if (e.newState == 8) 
    { 
     e.Ctlcontrols.pause(); 
    } 
} 

}

UPDATE: Кроме того, я хотел бы предложить вам использовать axWindowsMediaPlayer1_PlayStateChanged() событие, а не изменение СМИ, поскольку это может происходить, когда проблема возникает.

«8» означает «Media Ended», который, если вы знаете, как к нему обращаться по-другому, вы, конечно, можете. Если вы хотите использовать WMPLib.WMPPlayState.wmppsMediaEnded, я уверен, что это принесет тот же результат.

+0

Спасибо! Но можете ли вы дать дополнительную информацию? Я не могу использовать e.playState в axWindowsMediaPlayer1_MediaChange или axWindowsMediaPlayer1_PlayStateChange. Тогда в каком случае я могу это использовать? –

+0

См. Мое редактирование, вы должны иметь возможность использовать e.newState, и это будет в событии PlayStateChanged. –

+0

if (e.newState == 8) {} Работа прекрасна, но e.Ctlcontrols.pause(); - нет. Ошибка CS1061. axWindowsMediaPlayer1.Ctlcontrols.pause(); - компиляция, но никакого эффекта. –

 Смежные вопросы

  • Нет связанных вопросов^_^