2013-07-24 3 views
0

У меня есть код в C# WinForm, который должен иметь возможность читать список песен с listBox, а затем воспроизводить каждую песню с windowsMediaPlayer (по некоторым причинам я хочу играть песни с последний элемент listBox к первому).COM Exception HRESULT: 0xC00D1325 в C# winForm

вот код, я использую:

  int count = listBox1.Items.Count-1; 
      listBox1.SelectedItem = listBox1.Items[count]; 
      axWindowsMediaPlayer1.URL = listBox1.SelectedItem.ToString(); 
      axWindowsMediaPlayer1.Ctlcontrols.play(); 

, а затем при воспроизведении первая песня закончилась, я хотел изменить url так:

private void axWindowsMediaPlayer1_PlayStateChange_1(object sender, _WMPOCXEvents_PlayStateChangeEvent e) 
    { 
     if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded) 
     { 

      if (count > 0) 
      { 
       count = count - 1; 
       axWindowsMediaPlayer1.URL = listBox1.Items[count].ToString(); 
       axWindowsMediaPlayer1.Ctlcontrols.play(); 

      } 
     } 
    } 

этот код будет играть первым песня. НО в этой строке axWindowsMediaPlayer1.URL = listBox1.Items[count].ToString(); У меня есть COM Exception ERROR, а элемент управления WindowsMediaPlayer не воспроизводит остальные песни в списке.

здесь детали ОШИБКА:

System.Runtime.InteropServices.COMException was unhandled by user code 
    Message=Exception from HRESULT: 0xC00D1325 
    Source=Interop.WMPLib 
    ErrorCode=-1072884955 
    StackTrace: 
    at WMPLib.IWMPPlayer4.set_URL(String pbstrURL) 
    at AxWMPLib.AxWindowsMediaPlayer.set_URL(String value) 
    at Avaye_Malakooti_92.Form1.axWindowsMediaPlayer1_PlayStateChange_1(Object sender, _WMPOCXEvents_PlayStateChangeEvent e) in C:\Users\Novin Pendar\Documents\Visual Studio 2010\Projects\New folder\Avaye Malakooti 92\Avaye Malakooti 92\Form1.cs:line 459 
    at AxWMPLib.AxWindowsMediaPlayer.RaiseOnPlayStateChange(Object sender, _WMPOCXEvents_PlayStateChangeEvent e) 
    at AxWMPLib.AxWindowsMediaPlayerEventMulticaster.PlayStateChange(Int32 newState) 
    InnerException: 

Here is the error

Кто-нибудь есть какие-либо идеи, почему я получаю эту ошибку или как я должен решить? спасибо за помощь.

ответ

2

простой поиск Google для этого HRESULT код, указанный в этом качестве значения:

0xC00D1325 
NS_E_CURL_INVALIDCHAR 
The URL contains one or more characters that are not valid. 

Таким образом, вы, кажется, не указывая своего игрока на действительный URL для второй песни.

Вы можете увидеть список HRESULT кодов here

+0

Я исправил «url» до действительного, но он все еще не воспроизводит следующую песню. проблема исключения была решена. но почему 'mediaPlayer' не воспроизводит другие песни? –

+0

Я понятия не имею. это звучит как хорошая тема для нового вопроса. –

0

Я решил проблему не играть другие песни, добавляя Timer в мой код так:

private void axWindowsMediaPlayer1_PlayStateChange_1(object sender, _WMPOCXEvents_PlayStateChangeEvent e) 
    { 
     if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded) 
     { 
      if (count > 0) 
      { 
       count = count - 1; 
       axWindowsMediaPlayer1.URL = listBox1.Items[count].ToString(); 
       timer2.Enabled = true; 

      } 
     } 
    } 

, а затем поместить этот код к моим Timer2_Tick событию:

private void timer2_Tick(object sender, EventArgs e) 
    { 
     axWindowsMediaPlayer1.Ctlcontrols.play(); 
     timer2.Enabled = false; 
    } 

Надеется, что это решение помогает всем, кто имел такую ​​же проблему, как у меня.