[C#] windows media player на форме

Как добавить windows media player на нашу форму? Алгоритм довольно простой:

  • Открываем toolbox (Ctrl+W,X или View-Toolbox).
  • Жмем правой клавишей по одной из категорий в toolbox и выбираем пункт Choose Items…
  • В открывшемся диалоговом окне выбираем вкладку COM Components.
  • В списке ставим галочку напротив windows media player и жмем OK.

wmp

Теперь на панели toolbox появился компомент Windows Media Player, который можно перетащить на форму. PROFIT!!!!!!!
wmp 2

, , , ,

4 комментария
  1. Librit Said:

    Кто ни-будь знает как заставить плеер проигрывать видео одну за одной? Сейчас плеер проигрывает одно видео, потом останавливается и надо вызвать событие на обработку этой остановки.
    if (e.newState == 8)//индекс 8 показывающий, что видео закончилось или то, что плеер остановился
    {
    nCurrPlay++;//порядковый номер пути к видео
    if (nCurrPlay == saPlayList.Length)
    {
    nCurrPlay = 0;
    }
    axWMP.URL = saPlayList[nCurrPlay]; //слева сам элемент управления, справа массив в котором хранятся пути до видео.
    }

    При такой реализации плеер подставляет новую видяшку, но не начинает ее проигрывать.
    //axWMP.settings.autoStart = true;
    пробовал не помогает.
    Заранее спасибо за ответ))

  2. Librit Said:

    Нашел решение этой проблемы.
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Media;
    using System.IO;

    namespace Электроннная_очередь
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    string[] saPlayList;
    OpenFileDialog OFD = new OpenFileDialog();
    int nCurrPlay = 0;

    private void Form1_Load(object sender, EventArgs e)
    {

    DGQueue.ColumnCount = 11;
    DGQueue.Columns[0].Name = «№ по порядку»;
    DGQueue.Columns[1].Name = «1»;
    DGQueue.Columns[2].Name = «2»;
    DGQueue.Columns[3].Name = «3»;
    DGQueue.Columns[4].Name = «4»;
    DGQueue.Columns[5].Name = «5»;
    DGQueue.Columns[6].Name = «6»;
    DGQueue.Columns[7].Name = «7»;
    DGQueue.Columns[8].Name = «8»;
    DGQueue.Columns[9].Name = «9»;
    DGQueue.Columns[10].Name = «10»;
    Check_playlist_file();

    }

    //проверяем есть ли ссылка на файл из которого берем плейлист
    private bool Check_playlist_file()
    {
    string path =Environment.CurrentDirectory+»PlayListForQueue.txt» ;
    if (File.Exists(path))
    {
    saPlayList = new string[File.ReadAllLines(path).Length];
    saPlayList = File.ReadAllLines(path);
    }
    else
    {
    OFD.Multiselect = true;
    OFD.Filter = «All files (*.*)|*.*»;
    if (OFD.ShowDialog() == DialogResult.OK)
    {
    saPlayList = new string[OFD.FileNames.Length];
    saPlayList = OFD.FileNames;
    File.WriteAllLines(path, saPlayList);
    }
    else
    {
    return false;
    }
    }
    axWMP.settings.autoStart = true;
    axWMP.URL = saPlayList[0];
    return true;
    }

    private void axWMP_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
    switch (e.newState )
    {
    case ((int)WMPLib.WMPPlayState.wmppsStopped):
    nCurrPlay++;
    if (nCurrPlay == saPlayList.Length)
    {
    nCurrPlay = 0;
    }
    axWMP.URL = saPlayList[nCurrPlay];//подставляем следующий линнк на видео
    break;

    case ((int)WMPLib.WMPPlayState.wmppsReady):
    //если надо что то делать тут то делаем
    break;

    case ((int)WMPLib.WMPPlayState.wmppsPlaying):
    //если надо что то делать тут то делаем
    break;

    }
    }

    }
    }

  3. Librit Said:

    //в предыдущем посте была допущена неточность относительно обработки событий плеера. В данной редакции поправил. Теперь все видео, которое пользователь выбирает будет воспроизводиться.
    private void axWMP_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
    switch (axWMP.playState)
    {
    case (WMPLib.WMPPlayState.wmppsStopped):
    //если была нажата кнопка остановки плеера
    axWMP.settings.autoStart = true;
    break;

    case (WMPLib.WMPPlayState.wmppsWaiting):
    axWMP.settings.autoStart = true;//что то делаем, в данном случае просто проверяю на каком этапе выполняется это действие
    break;
    case (WMPLib.WMPPlayState.wmppsUndefined):
    axWMP.settings.autoStart = true;//что то делаем, в данном случае просто проверяю на каком этапе выполняется это действие
    break;
    case (WMPLib.WMPPlayState.wmppsTransitioning):
    axWMP.settings.autoStart = true;//что то делаем, в данном случае просто проверяю на каком этапе выполняется это действие
    break;
    case (WMPLib.WMPPlayState.wmppsScanReverse):
    axWMP.settings.autoStart = true;//что то делаем, в данном случае просто проверяю на каком этапе выполняется это действие
    break;
    case (WMPLib.WMPPlayState.wmppsScanForward):
    axWMP.settings.autoStart = true;//что то делаем, в данном случае просто проверяю на каком этапе выполняется это действие
    break;

    case (WMPLib.WMPPlayState.wmppsPaused):
    axWMP.settings.autoStart = true;//что то делаем, в данном случае просто проверяю на каком этапе выполняется это действие
    break;

    case (WMPLib.WMPPlayState.wmppsMediaEnded):
    //после окончания проигрывания текущего ролика просматриваем не достигли ли мы конца списка
    //если достигли, то переходим вначало воспроизведения
    if (nCurrPlay >= saPlayList.Length)
    {
    nCurrPlay = 0;
    }
    axWMP.close();//закрываем предыдущий ролик для проигрывания и освобождаем ресурсы
    axWMP.settings.autoStart = true;
    break;
    case (WMPLib.WMPPlayState.wmppsLast):
    axWMP.settings.autoStart = true;
    break;
    case (WMPLib.WMPPlayState.wmppsBuffering):
    axWMP.settings.autoStart = true;
    break;
    case (WMPLib.WMPPlayState.wmppsReady):
    //как только плеер готов к работе запускаем следующий ролик на воспроизведение
    axWMP.URL=saPlayList[nCurrPlay];//подставляем следующий линнк на видео
    //если надо что то делать тут то делаем
    break;

    case (WMPLib.WMPPlayState.wmppsPlaying):
    //если начали проигрывать видео то переходим на следующую запись
    nCurrPlay++;
    break;
    }
    }

  4. KronuS Said:

    Спасибо за столь содержательные комментарии! Если не затруднит (и вы в дальнейшем будете писать ответы), то кидайте код на pastebin, спасибо)

Оставить комментарий

Top ↑ | Main page | Back