Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 60

Открытие плеера созданного в Forms, открытием файла или через ярлык, (приложение по умолчанию)

18.03.2022, 12:27. Показов 1438. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, мне уже помогали по поводу блокнота, и я сделал по такой же схеме фото вьювер, как то дошло как, но теперь проблема, плеер не получается открывать, я долго копался, и получилось получать название файла с которого открывалась, но в трек лист, "лист бокс" трек не добавляется, у меня он есть, тоесть мне надо, чтобы он просто в трек лист добавлялся при открытии, и желательно чтобы при открытии ещё одного позже, он тоже добавлялся, как это решить? помогите пожалуйста.
надеюсь человек который мне помог, найдёт эту статью, чтобы он понял о чем я, так как он мне уже пару раз помог
всем заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2022, 12:27
Ответы с готовыми решениями:

Открытие Блокнота созданного в Forms, открытием файла txt через ярлык, (приложение по умолчанию)
Помогите пожалуйста реализовать такое, чтобы можно было перейти полностью на мною созданный блокнот! Тому что поможет сейчас, огромное...

открытие файла .fig, созданного через GUIDE
День добрый! Проблема в следующем. В GUIDE создано некоторое окно, реализующее определенные функции. Если запускать полученный файл .fig...

Открытие mht файла через chrome по умолчанию в реестре
Приветствую. Возникла необходимость найти в реестре раздел, где бы можно было изменить браузер по умолчанию для открытия .mht файлов с...

17
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
18.03.2022, 13:26
roach1967, кажется здесь ждут вашей помощи.
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
18.03.2022, 14:11
OwenGlendower, MarkAdderly, да, когда-то уже решал проблему с воспроизведением звука.
Нашёл, как воспроизводить плейлист. Чуть позже (дома, пока ещё на работе) попробую реализовать...
1
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 60
18.03.2022, 18:04  [ТС]
здравствуйте! спасибо что согласились снова помощь! вообещем уточню так как не сделал это, при открытии файла мне нужно сделать так, чтобы он добавлялся в лист бокс, (трек лист), воспроизведение автоматически я уже сделал, просто нужно чтобы он добавлялся в лист бокс, и все... скорее всего
Надеюсь вы поняли о чем я, вы мне уже помогали с блокнотом по поводу этого.
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
19.03.2022, 10:40
MarkAdderly, вот наконец разобрался.
Это тестовый проект, только что-бы разобраться, как запускать воспроизведение.
Кликните здесь для просмотра всего текста
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using WMPLib;
/**************************************************************************
 *  Меню "Проект",
 *  Пункт "Добавить ссылку...",
 *  Выбрать закладку "COM"
 *  (подождать несколько секунд)
 *  В списке найти строку "Windows media player" из библиотеки "wmp.dll",
 *  поставить галочку
 *  [OK]
 **************************************************************************/
 
namespace WindowsFormsApp23
{
    public partial class Form1 : Form
    {
        public static WindowsMediaPlayer WMP = new WindowsMediaPlayer();
        public TrackList PLS = new TrackList();
        public int currtrack = 0;
        public bool flg_play = false;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        public class WMPTrack
        {
            public WMPTrack(string path)
            {
                PathTrack = path;
                NameTrack = Path.GetFileNameWithoutExtension(path);
            }
 
            public string Duration { get; }
            public string NameTrack { get; set; }
            public string PathTrack { get; set; }
        }
 
        public class TrackList
        {
            public List<WMPTrack> Tracks = new List<WMPTrack>();
            public void AddTrack()
            {
                OpenFileDialog ofd = new OpenFileDialog
                {
                    Filter = "Файлы музыки (mp3)|*.mp3",
                    CheckFileExists = true,
                    AddExtension = true,
                    DefaultExt = "mp3"
                };
 
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    Tracks.Add(new WMPTrack(ofd.FileName));
                }
            }
 
            public string[] ToPLS()
            {
                string[] result = new string[Tracks.Count];
                for (int i = 0; i < Tracks.Count; i++)
                {
                    result[i] = Tracks[i].NameTrack;
                }
                return result;
            }
        }
 
        private void Button1_Click(object sender, EventArgs e)
        {
            PLS.AddTrack();
            listBox1.Items.Clear();
            listBox1.Items.AddRange(PLS.ToPLS());
            listBox1.SelectedIndex = 0;
        }
 
        private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            currtrack = listBox1.SelectedIndex;
            Text = $"[{(currtrack + 1)}/{listBox1.Items.Count}] : {PLS.Tracks[currtrack].PathTrack}";
        }
 
        private void Button2_Click(object sender, EventArgs e)
        {
            if (WMP.URL == "" || WMP.playState == WMPPlayState.wmppsStopped || WMP.playState == WMPPlayState.wmppsReady)
            {
                WMP.URL = PLS.Tracks[currtrack].PathTrack;
            }
            WMP.controls.play();
            flg_play = true;
        }
 
        private void Button3_Click(object sender, EventArgs e)
        {
            flg_play = false;
            WMP.controls.stop();
            WMP.URL = "";
            trackBar1.Value = 0;
            label2.Text = ToTime(0);
        }
 
        private void Button6_Click(object sender, EventArgs e)
        {
            if (WMP.playState == WMPPlayState.wmppsPaused)
            {
                WMP.controls.play();
                timer1.Start();
            }
            else
            {
                WMP.controls.pause();
                timer1.Stop();
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            WMP.PlayStateChange += WMP_PlayStateChange;
            WMP.settings.rate = 1.0;
        }
 
        private void WMP_PlayStateChange(int NewState)
        {
            if (NewState == (int)WMPPlayState.wmppsMediaEnded)
            {
                if (currtrack < listBox1.Items.Count - 1)
                {
                    listBox1.SelectedIndex++;
                    WMP.URL = "";
                }
                else
                {
                    flg_play = false;
                    listBox1.SelectedIndex = 0;
                    trackBar1.Value = 0;
                    label2.Text = ToTime(0);
                }
            }
            if (NewState == (int)WMPPlayState.wmppsReady)
            {
                if (flg_play) button2.PerformClick();
            }
            if (NewState == (int)WMPPlayState.wmppsPlaying)
            {
                label3.Text = ToTime(WMP.currentMedia.duration);
                timer1.Start();
            }
            if (NewState == (int)WMPPlayState.wmppsStopped)
            {
                timer1.Stop();
            }
        }
 
        private void Timer1_Tick(object sender, EventArgs e)
        {
            label2.Text = ToTime(WMP.controls.currentPosition);
            if (WMP.currentMedia.duration > 1.0)
            {
                trackBar1.Maximum = (int)WMP.currentMedia.duration;
                trackBar1.Value = (int)WMP.controls.currentPosition;
            }
        }
 
        public string ToTime(double time)
        {
            int min = (int)time / 60;
            double sek = time - min * 60;
            return $"{min:00}:{sek:00.0}";
        }
 
        private void Button4_Click(object sender, EventArgs e)
        {
            if (currtrack < listBox1.Items.Count - 1)
            {
                listBox1.SelectedIndex++;
                WMP.URL = "";
            }
        }
 
        private void TrackBar1_Scroll(object sender, EventArgs e)
        {
            WMP.controls.currentPosition = trackBar1.Value;
        }
 
        private void RadioButtons_CheckedChanged(object sender, EventArgs e)
        {
            if ((sender as RadioButton).Checked)
            {
                WMP.settings.rate = double.Parse((sender as RadioButton).Tag.ToString());
            }
        }
 
        private void Button5_Click(object sender, EventArgs e)
        {
            if (currtrack > 1)
            {
                listBox1.SelectedIndex--;
                WMP.URL = "";
            }
        }
    }
}
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
19.03.2022, 10:42
WindowsFormsApp23.rar
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 60
19.03.2022, 18:33  [ТС]
можно ли буде таким же методом реализовать добавление в лист бокс?

Добавлено через 2 часа 52 минуты
ваше приложении приложение выдаёт ошибку при изменении "скорости" и не открывает должным образом. что делать?, назначил вшае приложение, и вместо музыки пустота, даже в трек листе не появился.

Добавлено через 1 минуту
извиняюсь, увидел то что вы написали слешами

Добавлено через 2 минуты
добавил все как вы сказали, ничего не изменилось. файл не открывает, открывает только черкз кнопку, скорость меняется криво, выдаёт ошибки либо не меняет скорость.

Добавлено через 9 минут
никак не могу понять, какие строки отвечают за считывание файла при открытии плеера?
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
19.03.2022, 19:29
Переделал немножко проект. Попробую описать:
- автоматически загружает, сохраняет;
- можно перетаскивать треки для изменения порядка;
- ну и остальное в коментах в программе..
Кликните здесь для просмотра всего текста
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using WMPLib;
using System.Diagnostics;
/**************************************************************************
*  Меню "Проект",
*  Пункт "Добавить ссылку...",
*  Выбрать закладку "COM"
*  (подождать несколько секунд)
*  В списке найти строку "Windows media player" из библиотеки "wmp.dll",
*  поставить галочку
*  [OK]
**************************************************************************/
 
namespace WindowsFormsApp23
{
    public partial class Form1 : Form
    {
        public static WindowsMediaPlayer WMP = new WindowsMediaPlayer();
        public TrackList PLS = new TrackList(); // класс для работы с треками
        public int currtrack = 0; // текущий трек
        public bool flg_play = false; // состояние воспроизведения
        public static readonly string namePLS = "playlist.m3u"; // для плейлиста
 
        public Form1()
        {
            InitializeComponent();
        }
 
        public class TrackList
        {
            public List<string> WMPTracks = new List<string>(); // здесь все треки
            public void AddTrack()
            {
                OpenFileDialog ofd = new OpenFileDialog
                {
                    Filter = "Файлы музыки (mp3)|*.mp3",
                    CheckFileExists = true,
                    AddExtension = true,
                    DefaultExt = "mp3"
                };
 
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    WMPTracks.Add(ofd.FileName);
                }
            }
 
            public string[] ToPLS()
            {
                // для listbox оставляем только имя файла без расширения
                string[] result = new string[WMPTracks.Count];
                for (int i = 0; i < WMPTracks.Count; i++)
                {
                    result[i] = Path.GetFileNameWithoutExtension(WMPTracks[i]);
                }
                return result;
            }
 
            public void LoadFromFile()
            {
                // чтение плейлиста (если имеется)
                try
                {
                    if (File.Exists(namePLS)) WMPTracks = File.ReadAllLines(namePLS).ToList();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                WMPTracks.RemoveAll(x => x == null); // удаление пустых строк
            }
 
            public void SaveToFile() => File.WriteAllLines(namePLS, WMPTracks); // сохраняем свой плейлист
        }
 
        private void Button1_Click(object sender, EventArgs e)
        {
            // добавляем трек в плейлист на последнюю позицию
            PLS.AddTrack();
            listBox1.Items.Clear();
            listBox1.Items.AddRange(PLS.ToPLS());
            listBox1.SelectedIndex = 0;
        }
 
        private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            // если сменили выделенный трек
            // изменится только при остановке/запуске
            currtrack = listBox1.SelectedIndex;
            Text = $"[{(currtrack + 1)}/{listBox1.Items.Count}] : {PLS.WMPTracks[currtrack]}" ;
        }
 
        private void Button2_Click(object sender, EventArgs e)
        {
            // воспроизвести выделенный трек
            if (WMP.URL == "" || WMP.playState == WMPPlayState.wmppsStopped || WMP.playState == WMPPlayState.wmppsReady)
            {
                WMP.URL = PLS.WMPTracks[currtrack];
            }
            WMP.controls.play();
            flg_play = true; // состояние программы - воспроизводит
        }
 
        private void Button3_Click(object sender, EventArgs e)
        {
            // всё останавливаем
            flg_play = false;
            WMP.controls.stop();
            WMP.URL = "";
            trackBar1.Value = 0;
            label2.Text = ToTime(0);
        }
 
        private void Button6_Click(object sender, EventArgs e)
        {
            // пауза. если уже на паузе, продолжит играть
            if (WMP.playState == WMPPlayState.wmppsPaused)
            {
                WMP.controls.play();
                timer1.Start();
            }
            else
            {
                WMP.controls.pause();
                timer1.Stop();
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            // для имени трека возле мышки. пока не видать
            label1.Visible = false;
            label1.BackColor = Color.Transparent;
            label1.BorderStyle = BorderStyle.FixedSingle;
            // инициализация плеера
            WMP.PlayStateChange += WMP_PlayStateChange;
            WMP.settings.rate = 1.0;
            PLS.LoadFromFile();
            // заполняем listbox, если существует файл плейлиста
            listBox1.Items.Clear();
            listBox1.Items.AddRange(PLS.ToPLS());
            listBox1.SelectedIndex = 0;
            listBox1.AllowDrop = true; // разрешаем перетаскивание строк
        }
 
        private void WMP_PlayStateChange(int NewState)
        {
            // изменение состояния плеера
            if (NewState == (int)WMPPlayState.wmppsMediaEnded)
            {
                // по окончанию воспроизведени на следующий, если не последний
                if (currtrack < listBox1.Items.Count - 1)
                {
                    listBox1.SelectedIndex++;
                    WMP.URL = "";
                }
                else
                {
                    flg_play = false;
                    listBox1.SelectedIndex = 0;
                    trackBar1.Value = 0;
                    label2.Text = ToTime(0);
                }
            }
            if (NewState == (int)WMPPlayState.wmppsReady)
            {
                // если состояние готовности и программа воспроизводит, нажимаем кнопку PLAY
                if (flg_play) button2.PerformClick();
            }
            if (NewState == (int)WMPPlayState.wmppsPlaying)
            {
                // если начал воспроизведение, считываем продолжительность трека и запускаем таймер
                label3.Text = ToTime(WMP.currentMedia.duration);
                timer1.Start();
            }
            if (NewState == (int)WMPPlayState.wmppsStopped)
            {
                // если останавливается, то и таймер стоп
                timer1.Stop();
            }
        }
 
        private void Timer1_Tick(object sender, EventArgs e)
        {
            // выводим текущую позицию воспроизведения
            label2.Text = ToTime(WMP.controls.currentPosition);
            if (WMP.currentMedia.duration > 1.0) // говорят, что иногда плеер не считывает продолжительность, проверяем
            {
                trackBar1.Maximum = (int)WMP.currentMedia.duration;
                trackBar1.Value = (int)WMP.controls.currentPosition;
            }
        }
 
        public string ToTime(double time)
        {
            // из времени трека в минуты:секунды
            int min = (int)time / 60;
            double sek = time - min * 60;
            return $"{min:00}:{sek:00.0}";
        }
 
        private void Button4_Click(object sender, EventArgs e)
        {
            // переход на следующий трек
            if (currtrack < listBox1.Items.Count - 1)
            {
                listBox1.SelectedIndex++;
                WMP.URL = "";
            }
        }
 
        private void TrackBar1_Scroll(object sender, EventArgs e)
        {
            // изменяем место воспроизведения
            WMP.controls.currentPosition = trackBar1.Value;
        }
 
        private void RadioButtons_CheckedChanged(object sender, EventArgs e)
        {
            // изменяем скорость воспроизведения
            if ((sender as RadioButton).Checked)
            {
                WMP.settings.rate = double.Parse((sender as RadioButton).Tag.ToString());
            }
        }
 
        private void Button5_Click(object sender, EventArgs e)
        {
            // на предыдущий стрек
            if (currtrack > 1)
            {
                listBox1.SelectedIndex--;
                WMP.URL = "";
            }
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            PLS.SaveToFile(); // при звыходе сохраняем плейлист
        }
 
        //**************************************************************************************************************
        // Дальше магия перетаскивания треков для упорядочиванию по желанию левой пятки
        // код взят отсюда - https://www.cyberforum.ru/windows-forms/thread289879.html
        private static readonly int offset = 15; //чтоб имя перетаскиваемого элемента рядом с мышкой было 
        private readonly Stopwatch sw = new Stopwatch(); //чтобы не реагировал на обычный клик мышкой P.S. РЕАГИРУЕТ!!!!
        private bool moving = false;
        private int index = -1; // что перетаскиваем
        private Point strt;
 
        private void ListBox1_MouseDown(object sender, MouseEventArgs e)
        {
            try
            {
                if (listBox1.SelectedIndex > -1)
                {
                    moving = true;
                    index = listBox1.SelectedIndex;
                    label1.Visible = true;
                    label1.Location = new Point(listBox1.Location.X + e.X + offset, listBox1.Location.Y + e.Y + offset);
                    label1.Text = listBox1.SelectedItem.ToString();
                    sw.Start();
                    strt = new Point(e.X, e.Y);
                }
            }
            catch (Exception) { }
        }
 
        private void ListBox1_MouseUp(object sender, MouseEventArgs e)
        {
            // отпускаем кнопку. все действия параллельны и listbox и наш плейлист
            try
            {
                sw.Stop();
                if (moving && index > -1 && sw.ElapsedMilliseconds > 200 && listBox1.SelectedIndex != index) //стопка условий чтоб наверняка лишнее не подвинуть
                {
                    string temp = listBox1.Items[index].ToString();
                    string full = PLS.WMPTracks[index].ToString();
                    listBox1.Items.RemoveAt(index);
                    PLS.WMPTracks.RemoveAt(index);
                    if (listBox1.SelectedIndex < index)
                    {
                        listBox1.Items.Insert(listBox1.SelectedIndex, temp);
                        PLS.WMPTracks.Insert(listBox1.SelectedIndex, full);
                        listBox1.SelectedIndex--;
                    }
                    else
                    {
                        listBox1.Items.Insert(listBox1.SelectedIndex + 1, temp);
                        PLS.WMPTracks.Insert(listBox1.SelectedIndex + 1, full);
                        listBox1.SelectedIndex++;
 
                    }
                    //обнуляем все
                    index = -1;
                    moving = false;
                    label1.Visible = false;
                }
                if (moving && listBox1.SelectedIndex == index) // если не двигали строку P.S. КОСТЫЛЬ ОТ КЛИКА
                {
                    index = -1;
                    moving = false;
                    label1.Visible = false;
                }
                sw.Reset();
            }
            catch (Exception) { }
        }
 
        private void ListBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (label1.Visible == true)
            {
                // если двигаем мышку с нажатой кнопкой, передвигаем и название трека
                label1.Location = new Point(listBox1.Location.X + e.X + offset, listBox1.Location.Y + e.Y + offset);
            }
        }
    }
}

WindowsFormsApp23.zip
P.S. иногда появляется предупреждение, что-то про библиотеку WMPlib.dll. Но после нескольких запуском исчезают. (не кретично )
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 60
19.03.2022, 20:05  [ТС]
у меня это предупреждение тоже есть, щас проверю

Добавлено через 16 минут
пытаюсь открыть снова файл, перед этим импортировал дллку ту, не получилось, плеер продолжает сыпаться ошибками, и не открывает mp3, просто пустота, ничего в трек лист не добавилось, ничего не отображается. скорость тоже не меняется, кроме 100 или 200%.,кнопуи предыдущий или следующий не работают.
Я сейчас кину плеер, гляньте может вы попробуйте, измените если что-то я не правильно сделал, и добавьте пожалуйста возможность открывать mp3 при открытии плеера!
(имеется проблема ещё с видом WMP, когда я отключаю кнопки и тд, кнопки остаются, поэтому я его скрыл, он находится сверху) помогите пожалуйста
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 60
19.03.2022, 20:09  [ТС]
Вот архив
Вложения
Тип файла: rar FineWork Media Player.rar (308.7 Кб, 9 просмотров)
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
19.03.2022, 21:01
Посмотрел на скорую...
- dll подключили, но используете плеер из библиотек VisualStudio.
- нету подключения библиотеки WMPLib.
- в плеер передаётся только имя файла, без полного пути.
В моём приложении используется штатный медиаплеер WMP (не из библиотек VS)...
Попробуйте изменить мой проект с управлением.

Добавлено через 14 минут
Честно говоря, не работал с библиотекой axWMPLib, но логика работы отличается от стандартной.
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 60
19.03.2022, 23:00  [ТС]
плеер создан на Windows Media Player, точно так же как и ваш.

Добавлено через 1 минуту
ваш плеер изменить тоже не могу, он работает некорректно
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
20.03.2022, 09:37
Цитата Сообщение от MarkAdderly Посмотреть сообщение
плеер создан на Windows Media Player, точно так же как и ваш.
Но у меня используется библиотека WMPLib а не axWMPLib. Это разные библиотеки, с разными свойствами и процедурами..
У меня всё работает (Windows 10 Pro, сборка 19044.1586).
Проверено на двух разных компах. (на втором то-же Windows 10 Pro, только сборка другая)
Правда на обоих установлена Microsoft Visual Studio Community 2022 (64-разрядная версия)
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 60
20.03.2022, 22:46  [ТС]
точно так же как и у вас, тоже 21H2, тоже 2022 комьюнити, но после того как я собираю ваш проект, плеер спыпится ошибками
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
21.03.2022, 12:52
У библиотеки wmp.dll существуют проблемы при воспроизведении - при воспроизведении из пользовательского (не встроенного в библиотеку) плейлиста выскакивает исключение
Exception from HRESULT: 0xC00D1054
Гугление дало подсказку, что это связано с порчей поля WMP.URL. Путём метода "научного тыка" пришёл к такому порядку команд, как указанно в моей программе.

Сейчас переделываю проект под .NET 4.5 (под 3.0 не поддерживается).
Реализовал:
- добавление треков через кнопку и через перетаскивание с проводника
- перетаскивание треков для упорядочивания по желанию
- пуск, стоп, пауза, следующий, предыдущий
- перемотка в новую позицию
- автозагрузка, автосохранение треков.
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
21.03.2022, 19:07
MarkAdderly, вот наконец добил все хотелки:

WindowsFormsApp24.zip
Попробуйте просто запустить плеер у себя - специально не убирал из архива.
P.S. добавил ещё:
- убрал изменение скорости;
- при открытии с параметрами (допустим "открыть с помощью...", или перетаскиванием файла на программу, или если привязана к расширению) сразу запускается воспроизведение;
- понимает расширения mp3, ogg, wav, aac (при желании можно добавить ещё);
- понимает файл плейлиста m3u (почти стандарт windows), при этом добавляется в плейлист все треки из этого файла;
- если открывается с параметрами, то старый плейлист не загружается и при выходе из программы заменяется новым плейлистом.
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
21.03.2022, 19:17
по картинке:
- в заголовке окна текущий трек/всего треков;
- listbox, куда можно перетаскивать файлы/плейлисты (можно вперемежку);
- ползунком изменять место воспроизведения (можно создать свой слайдер, но пока нету таких знаний);
- время воспроизведения - продолжительность трека;
- кнопки: "загрузить", "предыдущий", "пауза", "пуск/стоп", "следующий". кнопки пуск/стоп совмещены и вперёд выдвигается необходимая;
- состояние плеера (их целых 11, но не все "озвучил").
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 60
24.03.2022, 01:17  [ТС]
извините что не отвечал, уведомление почему то не приходило, а в хром не заходил вообще, сейчас гляну
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2022, 01:17
Помогаю со студенческими работами здесь

Открытие файла через написанное приложение
Пишу программу, которая имеет свой формат файлов на основе xml. Как реализовать открытие таких файлов через &quot;Открыть с...

Открытие защищенной БД не через ярлык
Приветствую знатоков Access'a! Вопрос таков: сделал авторизацию пользователей для свой БД через мастера защиты на уровне пользователей,...

Открытие текстового файла по перетаскиванию файла на ярлык программы.
С обрабатываю текстовые файлы консольным приложением. Есть рисовальщик -графико построитесь. Но он требует специальный формат. Я пишу...

Открытие файла созданного в QuickReport?
Добрый день! Подскажите пожалуйста, мне надо написать простую смотрелку файлов QRP. Сама программа выглядит так: В данном...

Открытие файла, созданного в программе
У меня есть кнопки которые сохраняют и открывают файл. Мне нужно сделать так, чтобы открвался текстовый файл созданный только в этой...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru