Мист
08:16 28-03-2010 Транс.фм и ночь прикладного кодинга
Недели две уже ловлю себя на том, что неплохо бы наконец поближе ознакомиться с давно интересующим меня трансом. А то всё случайно, да урывками, да и то вовсе не оно оказывается.
Недолго думая, пошёл испрашивать совета, с чего б начать и чем продолжить, у D-Ocean'а - он у нас по электронной музыке большой специалист =)
А он возьми и скинь для ознакомления кучу полузнакомых имён и ссылку на интернет-радио - trance.fm, где я и провёл полночи, попутно пытаясь переварить свалившуюся на меня волну разнообразной электроники.
Впрочем, хотя и представлялся мне транс нескольким другим, понравилось очень. Не всё подряд, конечно, но в общем и целом - множество позитивных впечатлений. А кое-что даже записал на будущее поискать =))
Конечно, в плеере своём на прогулке я слабо себе такое представляю, но для ночного саундтрека вполне и весьма.
//Вообще, тырьнет-радио, как оказалось, я динамил совершенно незаслуженно =)
И вот ближе к середине ночи подумалось мне, что неплохо бы панельку в браузер или там окошечко маленькое на рабочий стол заиметь, чтобы каждый раз на сайт не лазить - ну, там, вкл/выкл, исполнителя подсмотреть опять же - и панель вкладок немного разгрузить.
//А надо сказать, WinAmp мой почему-то лагает и заикается при попытке онлайн-радио осилить. Так что т.н. вебплееры штука весьма удобная.
Код для вебплеера на Транс.фм нашёлся свой, html, аж в нескольких вариантах. Но куда ж мне его пихать-то? В поплавок дневниковый многострадальный? Не катит по ряду причин (неохота перепиливать там все теги на html - самая главная).
Сначала задумал я простую htm-страничку заделать. Получилось не совсем так, как хотелось, и довольно непрактично в использовании. Хотелось окошка по размерам плеера и возможности сворачивать в трей. Хотелось интерфейса и оформления. Хотелось творить...

Креативное мышление, подстёгиваемое слегка опьяняющей бодрой музыкой и желаем курить, не выдержало и начало рьяно искать способы приспособить всю эту вебдванольщину под совсем не веб-приложение C#.
Задача стояла в том, чтобы заставить приложение при запуске обрабатывать определённый HTML-код и выводить результат в пределах формы.
Собственно, загвоздка была в увязывании не-веб-элементов с веб-компонентами.
Ну и остаток ночи с увлечением решал поставленную задачу. Было интересно, невероятно занимательно и в конечном итоге несложно =)
Справедливости ради отмечу, что если бы я сразу внимательно изучил ToolBox, а также пример использования свойства DocumentText объекта webBrowser на MSDN, разработка заняла бы вполовину меньше времени. Дело в том, что я прописывал этот самый webBrowser, позволяющий приложению работать с веб-страницами, вручную, когда надо было просто перетащить его на форму. Отсюда и все недоумения по поводу "а куда он страницу будет загружать, если на форме его нет?! о_О" и "как эта шняга вообще работает?!".

И ведь что приятно - таки же докодил до логического завершения! Получилась такая простенькая оболочка для вебплеера, которая при запуске выполняет HTML-код, содержащий обращение к серверу и возвращающая аудиопоток и собственно внешний вид плеера. С возможностью работы в фоновом режиме и интерфейсом же!
В общих чертах получилось всё именно так, как хотелось (хотя динамическую смену "шкурок" реализовать так и не удалось, обидно), и без возни со сторонними библиотеками...
Правда, зависимость от иконки и опцию always-on-top надо всё-таки допилить.

Словом, ночь получилась весьма яркой и продуктивной =)

Да, кому вдруг интересно поюзать, вот здесь архив с программой. Только иконку никуда из папки не удаляйте - это вызывает падение программы

В ритме Midful Innovations - Sadness (Original Mix)
В общем, доволен собой =)
Комментарии:
D-Ocean
10:39 28-03-2010
Работает =) Я бы тока поле формы поменьше сделал, что бы не было белых этих зазоров по крям, или просто бэкраунд формы - черный.
Мист
15:26 28-03-2010
D-Ocean
Ни то, ни другое не осуществимо по не зависящим от меня причинам =)
У элемента webBrowser попросту нет свойства, отвечающего за фон. А зазоры по краям... Они автоматом появились, пришлось размер формы подгонять =)
//надо было наверно, в скрипте выравнивание по левому краю поставить....