Исключение COM HRESULT: 0xC00D1325 в C# winForm
У меня есть код в C# WinForm, который должен быть в состоянии прочитать список песен из listBox
а затем играть каждую песню с windowsMediaPlayer
(по некоторым причинам я хочу играть песни из последнего пункта listBox
к первому) .
вот код, который я использую:
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:
У кого-нибудь есть идея, почему я получил эту ошибку или как ее решить? Спасибо за помощь.
2 ответа
Простой поиск Google для этого кода HRESULT указал это в качестве значения:
0xC00D1325
NS_E_CURL_INVALIDCHAR
The URL contains one or more characters that are not valid.
Итак, кажется, вы не указываете свой плеер на действительный URL для второй песни.
Вы можете увидеть список кодов HRESULT здесь
Я решил проблему не играть другие песни, добавив 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;
}
Надеюсь, что это решение поможет всем, у кого была такая же проблема, как у меня.