Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Вывод названия трека в Лейбл C#

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 08.12.2011, 06:32   #1
 Старший сержант
Аватар для OneShot
 
OneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражания
Регистрация: 19.08.2008
Сообщений: 205
Популярность: 2562
Золото Zhyk.Ru: 5
Сказал(а) спасибо: 36
Поблагодарили 268 раз(а) в 122 сообщениях
Отправить сообщение для OneShot с помощью Skype™
 
По умолчанию Вывод названия трека в Лейбл C#

В кратце суть проблемы, пишу проигрыватель на основе библиотек WindowsMedia, нужно чтобы в лейбл выводилось название трека который играет в данный момент

Есть функция которая выводит название:
Код:
label2.Text = WMP.currentPlaylist.Item[0].name;

Только вот куда её втыкать в моем коде чтобы корректно работала и обновляла свое содержание в режиме реального времени, а не от кликанья по баттонам?


Код программы:
Код:
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;

namespace WindowsFormsApplication15
{
    public partial class Form1 : Form
    {
        
        public Form1()
        {
            InitializeComponent();
            label1.Text = "Volume 100";
            WMP.uiMode = "none";
           


        }

        private void buttun1_Click(object sender, EventArgs e)
        {

            WMP.URL = @"http://online.vladivostok.fm:8000/rock";

        } 

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            label1.Text = "Volume " + trackBar1.Value.ToString();
            WMP.settings.volume = trackBar1.Value;

        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
        }

        private void WMP_Enter(object sender, EventArgs e)
        {
            
        }

       
        
        
        
    }
}

З.ы изучаю си совсем недавно, поэтому не грамотный еще в этой области

Добавлено через 10 часов 26 минут
ап

Добавлено через 17 часов 44 минуты
вверх!
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось OneShot; 09.12.2011 в 00:17. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 10.12.2011, 08:03   #2
 Старший сержант
Аватар для OneShot
 
OneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражания
Регистрация: 19.08.2008
Сообщений: 205
Популярность: 2562
Золото Zhyk.Ru: 5
Сказал(а) спасибо: 36
Поблагодарили 268 раз(а) в 122 сообщениях
Отправить сообщение для OneShot с помощью Skype™
 
По умолчанию Re: Вывод названия трека в Лейбл C#

UP!UP!Помогите
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 10.12.2011, 20:12   #3
 Разведчик
Аватар для cowcancry
 
cowcancry на правильном путиcowcancry на правильном пути
Регистрация: 29.08.2009
Сообщений: 12
Популярность: 158
Сказал(а) спасибо: 4
Поблагодарили 26 раз(а) в 9 сообщениях
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Просто выполняешь своё действие в отдельном потоке сразу с небольшой задержкой, подключаешь
Код:
using System.Threading;
И где-нибудь в главной части:
Код:
Thread T = new Thread(delegate() 
{ 
   while(true) // бесконечный цикл
   {
      label2.Text = WMP.currentPlaylist.Item[0].name;
      Thread.Sleep(300); // каждые 300 мс будет обновляться название
   }
});
T.IsBackground = true; // делаем поток фоновым.
T.Start(); // запускаем работу потока
Так делать не совсем хорошо, потому что наш поток будет обращатся к контролу, который был создан в другом потоке, но код работать будет
________________
Хэшкрякер для zhyk.ru
  Ответить с цитированием
Старый 11.12.2011, 02:44   #4
 Старший сержант
Аватар для OneShot
 
OneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражания
Регистрация: 19.08.2008
Сообщений: 205
Популярность: 2562
Золото Zhyk.Ru: 5
Сказал(а) спасибо: 36
Поблагодарили 268 раз(а) в 122 сообщениях
Отправить сообщение для OneShot с помощью Skype™
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Цитата:
Сообщение от cowcancryПосмотреть сообщение
Просто выполняешь своё действие в отдельном потоке сразу с небольшой задержкой, подключаешь
Код:
using System.Threading;
И где-нибудь в главной части:
Код:
Thread T = new Thread(delegate() 
{ 
   while(true) // бесконечный цикл
   {
      label2.Text = WMP.currentPlaylist.Item[0].name;
      Thread.Sleep(300); // каждые 300 мс будет обновляться название
   }
});
T.IsBackground = true; // делаем поток фоновым.
T.Start(); // запускаем работу потока
Так делать не совсем хорошо, потому что наш поток будет обращатся к контролу, который был создан в другом потоке, но код работать будет

А есть еще способы?

Добавлено через 1 час 51 минуту
Не работает, говорит элемент (label2) не в этом потоке создан
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "label2" не из того потока, в котором он был создан.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось OneShot; 11.12.2011 в 04:37. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 11.12.2011, 15:01   #5
 Разведчик
Аватар для cowcancry
 
cowcancry на правильном путиcowcancry на правильном пути
Регистрация: 29.08.2009
Сообщений: 12
Популярность: 158
Сказал(а) спасибо: 4
Поблагодарили 26 раз(а) в 9 сообщениях
 
По умолчанию Re: Вывод названия трека в Лейбл C#

В дебаге оно будет вылетать, а если просто запускать программу, то всё будет хорошо. Чуть позже, напишу потоко-безопасный вариант.
Другой вариант, если есть в программе какое-нибудь событие при смене песни, то использовать его

Добавлено через 28 минут
[Ссылки могут видеть только зарегистрированные пользователи. ] тут правильное обращение через делегат.
________________
Хэшкрякер для zhyk.ru

Последний раз редактировалось cowcancry; 11.12.2011 в 15:30. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 11.12.2011, 15:33   #6
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Цитата:
Сообщение от OneShotПосмотреть сообщение
А есть еще способы?

Добавлено через 1 час 51 минуту
Не работает, говорит элемент (label2) не в этом потоке создан
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "label2" не из того потока, в котором он был создан.

Просто в потоке к контролам обращайся через метод бегин инвоук твоей формы(/контрола).
Example:
Код:
this.BeginInvoke(
new Action(()=>
{
lalbel1.Text = "...";
}));
p.s. Код предполагает что действия выполняются в классе формы.
p.p.s. В dx sdk в подобных классах реализованы события вроде паузы/проигрыша, думаю в вмплеере такое тоже должно быть. А то все-таки некрасиво это дело выглядит..
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 11.12.2011, 16:52   #7
 Старший сержант
Аватар для OneShot
 
OneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражания
Регистрация: 19.08.2008
Сообщений: 205
Популярность: 2562
Золото Zhyk.Ru: 5
Сказал(а) спасибо: 36
Поблагодарили 268 раз(а) в 122 сообщениях
Отправить сообщение для OneShot с помощью Skype™
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
p.s. Код предполагает что действия выполняются в классе формы.
p.p.s. В dx sdk в подобных классах реализованы события вроде паузы/проигрыша, думаю в вмплеере такое тоже должно быть. А то все-таки некрасиво это дело выглядит..

Может и реализованы, но я не знаю как, гугл молчит по этой теме!
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 11.12.2011, 17:00   #8
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Цитата:
Сообщение от OneShotПосмотреть сообщение
Может и реализованы, но я не знаю как, гугл молчит по этой теме!

Через интеллисэнс покопайся в классе) - Порой очень действенно)
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 11.12.2011, 17:22   #9
 Старший сержант
Аватар для OneShot
 
OneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражания
Регистрация: 19.08.2008
Сообщений: 205
Популярность: 2562
Золото Zhyk.Ru: 5
Сказал(а) спасибо: 36
Поблагодарили 268 раз(а) в 122 сообщениях
Отправить сообщение для OneShot с помощью Skype™
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
Через интеллисэнс покопайся в классе) - Порой очень действенно)

Даже если чтото накопаю, как сделать чтобы работало? Мне бы на примере, я уже что только не пробывал, можно сделать только через клик по баттону или другое событие, а чтобы автоматически выводил, немогу!
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 11.12.2011, 17:25   #10
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Цитата:
Сообщение от OneShotПосмотреть сообщение
Может и реализованы, но я не знаю как, гугл молчит по этой теме!

Через интеллисэнс покопайся в классе) - Порой очень действенно)
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 12.12.2011, 09:07   #11
 Старший сержант
Аватар для OneShot
 
OneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражанияOneShot блестящий пример для подражания
Регистрация: 19.08.2008
Сообщений: 205
Популярность: 2562
Золото Zhyk.Ru: 5
Сказал(а) спасибо: 36
Поблагодарили 268 раз(а) в 122 сообщениях
Отправить сообщение для OneShot с помощью Skype™
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
Просто в потоке к контролам обращайся через метод бегин инвоук твоей формы(/контрола).
Example:
Код:

this.BeginInvoke(
new Action(()=>
{
lalbel1.Text = "...";
}));

p.s. Код предполагает что действия выполняются в классе формы.
p.p.s. В dx sdk в подобных классах реализованы события вроде паузы/проигрыша, думаю в вмплеере такое тоже должно быть. А то все-таки некрасиво это дело выглядит..

Можешь показать на примере моего кода? я C# недавно совсем юзаю =)

Добавлено через 46 минут
Цитата:
Сообщение от cowcancryПосмотреть сообщение
В дебаге оно будет вылетать, а если просто запускать программу, то всё будет хорошо. Чуть позже, напишу потоко-безопасный вариант.
Другой вариант, если есть в программе какое-нибудь событие при смене песни, то использовать его

Программа вылетает с ошибкой

Добавлено через 1 час 16 минут
Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
Просто в потоке к контролам обращайся через метод бегин инвоук твоей формы(/контрола).
Example:
Код:
this.BeginInvoke(
new Action(()=>
{
lalbel1.Text = "...";
}));
p.s. Код предполагает что действия выполняются в классе формы.
p.p.s. В dx sdk в подобных классах реализованы события вроде паузы/проигрыша, думаю в вмплеере такое тоже должно быть. А то все-таки некрасиво это дело выглядит..

Цитата:
Контекст 0x2ef108" отключен. Освобождение интерфейсов из текущего контекста (контекст 0x2eef98). Это может вызвать повреждение или потерю данных. Для исключения этой проблемы убедитесь в том, что все контексты/апартаменты еще существуют до полного завершения приложением использования RuntimeCallableWrappers, представляющих находящиеся в них COM-компоненты.

Если не в дебаге, то прога просто зависает
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось OneShot; 12.12.2011 в 10:24. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 12.12.2011, 15:42   #12
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Вывод названия трека в Лейбл C#

Цитата:
Сообщение от OneShotПосмотреть сообщение
Можешь показать на примере моего кода? я C# недавно совсем юзаю =)

Добавлено через 46 минут

Программа вылетает с ошибкой

Добавлено через 1 час 16 минут




Если не в дебаге, то прога просто зависает

А что ты собственно пытаешься сделать?))

Код:
string lastTrack; //ГЛОБАЛЬНАЯ переменная, содержащая последний трек

public void checkName()
{
lastTrack = /*перед входом в цикл, назначаешь этой переменной название текущего трека*/;
loop:
if( /*WMP..... текущий трек короче*/ != lastTrack)
{
this.BeginInvoke(()=>{
      label1.Text = lastTrack = /*текущий трек*/;
});
}
goto loop;
}
А вообще, тебе уже говорили - лучше прошерстить msdn на предмет событий паузы/остановки/проигрывания/смены дорожки и т.п.
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Обменяю] Обмен, ввод, вывод - WM, ЯД, Альфа, LR, PM и др. seoprod Товары/услуги в Сети 2 26.03.2012 23:04
[Помогите!] вывод вм денег kystik Общение и обсуждение 9 07.11.2011 21:18
[Помогите!] Вывод акка с минуса! dats2 Общение и обсуждение 8 02.08.2011 16:27
[Помогите!] Вывод информации о персонаже AlexM81 Общение и обсуждение Perfect World 20 20.04.2011 22:55

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 19:52.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net