Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82

Аудиоплеер, проигрыватель мелодий

26.02.2025, 17:50. Показов 7596. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый вечер! Вот код проигрывателя на С#, помогите сделать так, чтобы плеер работал постоянно? То есть проиграла одна мелодия, началась вторая и т.д..Не хочу оправдываться, но не получается и всё, помогите, очень прошу...Сейчас играет только когда кликнешь по названию мелодии, проиграет одна песня и стоп.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Pleer3
{
    public partial class Form1: Form
    {
        string[] files, paths;
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();
            openFile.Multiselect = true;
            if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                files = openFile.SafeFileNames;
                paths = openFile.FileNames;
                for (int i = 0; i < files.Length; i++)
                {
                    listBox1.Items.Add(files[i]);
                }
            }
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.URL = paths[listBox1.SelectedIndex];
        }
    }
}
Миниатюры
Аудиоплеер, проигрыватель мелодий  
Вложения
Тип файла: rar Pleer3.rar (351.4 Кб, 3 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2025, 17:50
Ответы с готовыми решениями:

Проигрыватель музыки (аудиоплеер) - вывод обложки
На данный момент пишу курсовую работу на С#. Использую WindowsMediaPlayer. Некоторые функции уже работают(Воспроизвести, Пауза, Стоп,...

Сделать зрительные образы как в проигрывателе Windows Player
Подскажите пожалуйста, покажите примеры, как программно сделать зрительные образы как в Проигрывателе Windows Player ?

Аудиоплеер: что использовать для воспроизведения и как организовать программу в общем
Доброго времени суток, форумчане! Я тут с другом решил сделать свой простенький аудиоплеер. Вот и пошли вопросы что да как. Можете...

20
3260 / 3301 / 556
Регистрация: 17.02.2019
Сообщений: 5,199
26.02.2025, 18:14
kukushka3, так моно и циклом сделать. Кнопка нажали. А там или передать в метод или прям в кнопке.
0
26.02.2025, 18:20

Не по теме:

Цитата Сообщение от January29 Посмотреть сообщение
или прям в кнопке
или по кошачьей морде... ))

0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
26.02.2025, 18:39  [ТС]
Не потяну, хотелось бы код...
0
3260 / 3301 / 556
Регистрация: 17.02.2019
Сообщений: 5,199
26.02.2025, 20:15
Лучший ответ Сообщение было отмечено kukushka3 как решение

Решение

kukushka3, ну не знаю, подойдет
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) // это ваше
{
    //axWindowsMediaPlayer1.URL = paths[listBox1.SelectedIndex];
    AutoPlay(axWindowsMediaPlayer1,listBox1.SelectedIndex); // всё в методе делается
}
 
public void AutoPlay(AxWindowsMediaPlayer play, int index)
{
    string[] autoPlays = new string[listBox1.Items.Count - index];
    Array.Copy(paths,index, autoPlays,0,listBox1 .Items .Count - index);
    var myPlayList = play.playlistCollection.newPlaylist("MyPlayList");
    for (int i = 0; i < autoPlays.Length; i++)
    {
        play.URL = autoPlays[i];
        var mediaItem = axWindowsMediaPlayer1.newMedia(autoPlays[i]);
        myPlayList.appendItem(mediaItem);
    }
    play.currentPlaylist = myPlayList;
}
Добавлено через 25 минут

Не по теме:

Цитата Сообщение от wizard41 Посмотреть сообщение
или по
ну вот (

0
26.02.2025, 20:21

Не по теме:

Цитата Сообщение от January29 Посмотреть сообщение
ну вот (
весной опасно с кошкой гулять... Может привести домой пополнение ))

0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
27.02.2025, 05:43  [ТС]
ЭТО СУПЕР ОТВЕТ January 29, большое спасибо, всё работает великолепно, правда хотелось бы ещё чтобы выделенная мелодия в ListBox (синее выделение) тоже со сменой мелодии двигалась , т.е. меняла своё положение согласно проигранной мелодии...Спасибо!
0
3260 / 3301 / 556
Регистрация: 17.02.2019
Сообщений: 5,199
27.02.2025, 09:00
Цитата Сообщение от kukushka3 Посмотреть сообщение
чтобы выделенная мелодия в ListBox (синее выделение) тоже со сменой мелодии двигалась
В редакторе формы выделите ваш плеер axWindowsMediaPlayer1, перейдите в событие(нажать молнию) где свойства. Найдите событие PlayStateChange и кликните двойным кликом. И в нем уже пишем чёт такого. Узнаём индекс выделенной строки и меняем выделяем следующую строку, конечно если в ListBox установлена выделение одного элемента. Но это не работает если переключать кнопками плеера.
C#
1
2
3
4
5
6
7
8
private void AxWindowsMediaPlayer1_PlayStateChange(object sender, _WMPOCXEvents_PlayStateChangeEvent e)
{
    if(e.newState == 8)
    {
        int indexPlay = listBox1.SelectedIndex;
        listBox1.SelectedIndex = ++indexPlay;
    }
}
так для справочки что за цифра 8
Кликните здесь для просмотра всего текста
0 = Undefined
1 = Stopped (by User)
2 = Paused
3 = Playing
4 = Scan Forward
5 = Scan Backwards
6 = Buffering
7 = Waiting
8 = Media Ended
9 = Transitioning
10 = Ready
11 = Reconnecting
12 = Last
0
dive
 Аватар для I can
4964 / 4661 / 845
Регистрация: 13.04.2015
Сообщений: 9,858
27.02.2025, 09:09
Цитата Сообщение от January29 Посмотреть сообщение
listBox1.SelectedIndex = ++indexPlay;
А это не вызовет событие
Цитата Сообщение от January29 Посмотреть сообщение
listBox1_SelectedIndexChanged
? И всё по кругу?
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
27.02.2025, 09:23  [ТС]
Большое Вам спасибо, обязательно попытаюсь проработать ваше предложение по вопросу движения выделенной мелодии (строки), спасибо...
0
3260 / 3301 / 556
Регистрация: 17.02.2019
Сообщений: 5,199
27.02.2025, 14:50
kukushka3, обработчик кнопки
C#
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog openFile = new OpenFileDialog();
    openFile.Multiselect = true;
    if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        paths = openFile.FileNames;
        listBox1.Items.AddRange(openFile.SafeFileNames);
    }
}
создаём событие ListBox1_Click
C#
1
2
3
4
private void ListBox1_Click(object sender, EventArgs e)
{
    AddFilesMedia(paths, listBox1.SelectedIndex);
}
потом это AxWindowsMediaPlayer1_PlayStateChange для чтоб двигался в Listbox
C#
1
2
3
4
5
6
7
8
9
private void AxWindowsMediaPlayer1_PlayStateChange(object sender, _WMPOCXEvents_PlayStateChangeEvent e)
{
    if (e.newState == 8)
    {
        int indexPlay = listBox1.SelectedIndex;
        if (++indexPlay >= listBox1.Items.Count) return;
        listBox1.SelectedIndex = indexPlay;
    }
}
ну и два метода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
private void AddFilesMedia(string[] path, int index) // добавим
{
    string[] autoPlays = new string[listBox1.Items.Count - index];
    Array.Copy(path, index, autoPlays, 0, listBox1.Items.Count - index);
    var MyPlayList = axWindowsMediaPlayer1.playlistCollection.newPlaylist("MyPlaylist");
 
    foreach (string playlists in autoPlays)
    {
        MyPlayList.appendItem(axWindowsMediaPlayer1.newMedia(playlists));
    }
    Run(MyPlayList);
}
 
private void Run(IWMPPlaylist playlist) // играем
{
    try
    {
        if (playlist.count > 0)
        {
            axWindowsMediaPlayer1.BringToFront();
            axWindowsMediaPlayer1.currentPlaylist = playlist;
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }
        else
        {
            MessageBox.Show("Не выбрано");
        }
    }
    catch (Exception)
    {
        MessageBox.Show("ОШИБКА");
    }
}
А событие listBox1_SelectedIndexChanged моно убрать
Но не работают кнопки
весь код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using AxWMPLib;
using WMPLib;
 
namespace Pleer3
{
    public partial class Form1 : Form
    {
        //string[] files; // имя файла
        string[] paths; // путь
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();
            openFile.Multiselect = true;
            if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                paths = openFile.FileNames;
                listBox1.Items.AddRange(openFile.SafeFileNames);
            }
        }
 
        private void ListBox1_Click(object sender, EventArgs e)
        {
            AddFilesMedia(paths, listBox1.SelectedIndex);
        }
 
        private void AxWindowsMediaPlayer1_PlayStateChange(object sender, _WMPOCXEvents_PlayStateChangeEvent e)
        {
            if (e.newState == 8)
            {
                int indexPlay = listBox1.SelectedIndex;
                if (++indexPlay >= listBox1.Items.Count) return;
                listBox1.SelectedIndex = indexPlay;
            }
        }
    
        private void AddFilesMedia(string[] path, int index)
        {
            string[] autoPlays = new string[listBox1.Items.Count - index];
            Array.Copy(path, index, autoPlays, 0, listBox1.Items.Count - index);
            var MyPlayList = axWindowsMediaPlayer1.playlistCollection.newPlaylist("MyPlaylist");
 
            foreach (string playlists in autoPlays)
            {
                MyPlayList.appendItem(axWindowsMediaPlayer1.newMedia(playlists));
            }
            Run(MyPlayList);
        }
 
        private void Run(IWMPPlaylist playlist)
        {
            try
            {
                if (playlist.count > 0)
                {
                    axWindowsMediaPlayer1.BringToFront();
                    axWindowsMediaPlayer1.currentPlaylist = playlist;
                    axWindowsMediaPlayer1.Ctlcontrols.play();
                }
                else
                {
                    MessageBox.Show("Не выбрано");
                }
            }
            catch (Exception)
            {
                MessageBox.Show("ОШИБКА");
            }
        }
 
    }
}


Добавлено через 2 часа 21 минуту
kukushka3, в событие AxWindowsMediaPlayer1_PlayStateChange удалите всё и вставьте так. И кнопки работают и что играет выделяет. Пробуйте.
C#
1
2
3
4
5
6
private void AxWindowsMediaPlayer1_PlayStateChange(object sender, _WMPOCXEvents_PlayStateChangeEvent e)
{
    // Проверяем, находится ли проигрыватель в режиме воспроизведения, если да то выделяем строку в listbox1.
    if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsPlaying)
        listBox1.SelectedItem = Path.GetFileName(axWindowsMediaPlayer1.currentMedia.sourceURL);
}
Добавлено через 12 минут
kukushka3, Или вам надо чтоб сразу играть начал, при добавлении?
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
27.02.2025, 23:13  [ТС]
Пока отработал здесь, но всё ещё впереди:
C#
1
2
3
4
5
6
7
8
9
private void AxWindowsMediaPlayer1_PlayStateChange(object sender, _WMPOCXEvents_PlayStateChangeEvent e)
{
    if (e.newState == 8)
    {
        int indexPlay = listBox1.SelectedIndex;
        if (++indexPlay >= listBox1.Items.Count) return;
        listBox1.SelectedIndex = indexPlay;
    }
}
очень рад, спасибо, завтра буду продолжать...
0
3260 / 3301 / 556
Регистрация: 17.02.2019
Сообщений: 5,199
28.02.2025, 13:33
kukushka3, попробуйте наверно так как вы хотели.
Pleer3.7z
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
28.02.2025, 19:41  [ТС]
ДОБРЫЙ ВЕЧЕР! ПОСЛЕДНИЙ АРХИВ - ЭТОТ ВАРИАНТ ОЧЕНЬ ХОРОШИЙ И ЕГО ВПОЛНЕ МОЖНО ОСТАВИТЬ И БОЛЬШОЕ ВАМ СПАСИБО И НА ЭТОМ МОЖНО ОСТАНОВИТЬСЯ. НО ЕСТЬ ОЧЕНЬ МАЛЕНЬКОЕ ЖЕЛАНИЕ, ЧТОБЫ ПОСЛЕ ПОСЛЕДНЕЙ МЕЛОДИИ АВТОМАТИЧЕСКИ БЫ ПРОДОЛЖАЛА ИГРАТЬ 1 ПЕСНЯ (ТО ЕСТЬ ПОСТОЯННО ПРОДОЛЖАЛСЯ БЫ ЦИКЛ)...ХОТЕЛОСЬ БЫ ЭТО...

Добавлено через 3 минуты
ВЫ МНЕ МНОГО РАСТОЛКОВАЛИ И ПРИСЛАЛИ ИДЕЙ И ЭТО ОЧЕНЬ ХОРОШО, И ЗДЕСЬ ОЧЕНЬ БОЛЬШОЕ ПОЛЕ ДЕЯТЕЛЬНОСТИ, НО ХОЧЕТСЯ ПОПРОЩЕ И ПОБЫСТРЕЙ И ПО ЩУЧЬЕМУ ВЕЛЕНИЮ, ХОТЯ Я КОНЕЧНО НЕ ПРАВ...
0
3260 / 3301 / 556
Регистрация: 17.02.2019
Сообщений: 5,199
28.02.2025, 21:13
Цитата Сообщение от kukushka3 Посмотреть сообщение
ТО ЕСТЬ ПОСТОЯННО ПРОДОЛЖАЛСЯ БЫ ЦИКЛ
Если всегда то создайте событие Form1_Load и в нем пропишите.
C#
1
2
3
4
private void Form1_Load(object sender, EventArgs e)
{
    axWindowsMediaPlayer1.settings.setMode("loop", true);
}
Или через кнопку включить или выключить повтор. Кидаем кнопку на форму, текст кнопки Loop Off и кликаем два раза и там пишем
C#
1
2
3
4
5
6
7
8
bool loopBool = false; // включение или выключение повтора
 
private void Button2_Click(object sender, EventArgs e)
{
    loopBool = !loopBool; // меняем между true или false
    axWindowsMediaPlayer1.settings.setMode("loop", loopBool);
    button2.Text = loopBool ? "Loop On" : "Loop Off"; // на кнопке пишем или или
}
Вот архив Pleer3.7z
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
01.03.2025, 06:04  [ТС]
Доброе утро! Вот это Супер! Большое Вам спасибо!
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
02.03.2025, 10:20  [ТС]
Доброе утро! И снова обращаюсь к Вам, January29 ...Помогите по следующему вопросу:" Хочу получить бегущую строку в textBox1". В прошлом году делал на С++ получалось, а на С шарп никак не могу...Помогите, пожалуйста, лучше что то попроще...
Вложения
Тип файла: rar Плеер.rar (23.65 Мб, 25 просмотров)
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
02.03.2025, 10:33  [ТС]
Был бы очень благодарен, если бы объяснили каким образом можно разместить вспомогательные файлы в папке сохранённого проекта и каким образом прописывать путь к ним...
0
3260 / 3301 / 556
Регистрация: 17.02.2019
Сообщений: 5,199
02.03.2025, 16:25
Цитата Сообщение от kukushka3 Посмотреть сообщение
Хочу получить бегущую строку в textBox1
Куда она бежит? Посмотрите таке пойдёт, верней побежит Плеер.7z
Цитата Сообщение от kukushka3 Посмотреть сообщение
объяснили каким образом можно разместить вспомогательные файлы в папке сохранённого проекта и каким образом прописывать путь к ним...
Или поместить где у вас файл запуска .exe или можно в ресурсы запихать. Я поместил где файл запуска. Из папки 2.
Если в ресурсы то чёт такого
C#
1
pictureBox1.Image = Properties.Resources._33;
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
02.03.2025, 16:36  [ТС]
О, это сказка - Супер, очень рад, Большое вам спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.03.2025, 16:36
Помогаю со студенческими работами здесь

Ошибка при попытке открыть файл в видео-проигрывателе
Подскажите, пожалуйста, почему возникает эта ошибка при событии button3_Click (открыть файл)? Хотел сделать видео-плеер по этому уроку:...

NAudio: Добавить в свою программу небольшой аудиоплеер
Здравствуйте. Хочу добавить в свою программу небольшой аудио плеер. Мне посоветовали подключить библиотеку NAudio. Подключил через Package...

Устранить ошибку в видео-проигрывателе
Господа,как устранить ошибку для нормальной работы приложения &quot;видео-проигрыватель&quot;. Ошибка на скрине.

Воспроизведение видео VK своим проигрывателем (VK API или парс?)
Есть абстрактная программа для просмотра видео. Видео хранятся в видеозаписях ВКонтакте. Пользователь выбирает видео из списка и...

Проигрыватель звуков
Столкнулся со следующей проблемой: необходимо воспроизводить звук в формате mp3, а возможно только воспроизведение wav-формата ...Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru