Улучшенный проигрыватель Windows Media с помощью VS 2005 на C#

Автор: Sateesh Arveti

В данной статье описано добавление дополнительных функций в проигрыватель Windows Media.

Большинство пользователей платформ Windows используют Media Player. В нем много функций. Но все-таки некоторых необходимых функций не хватает. Например, сворачивание окна приложения, поверх всех окон, загрузка песен по умолчанию, плейлист недавно проигранных песен, простая навигация по песням и т.д. Я думаю, что на его основе можно создать приложение, которое облегчит работу со звуковыми дорожками. И вот я разработал это приложение в VS.NET 2005 с помощью C# и форм Windows. Я перечислю предоставляемые данным приложением функции, а затем опишу его структуру и код.

Функции приложения

  • Полное сворачивание проигрывателя во время работы.
  • Помещение проигрывателя поверх всех окон во время работы. Это позволит выполнять другие задачи во время просмотра видео.
  • Получение полного списка недавно проигранных песен.
  • Загрузка всех песен из предварительно определенной папки.
  • Проигрывание видео в режиме без окна.
  • Один щелчок для проигрывания песен, открытых последними.
  • Один щелчок мыши для сокрытия ненужных элементов управления во время просмотра.

Теперь с помощью C# в VS.NET 2005 создайте новое приложение Windows и назовите его MediaPlayer. Добавьте в Основную форму (MediaPlayer) элементы управления, как показано ниже:

Здесь я задаю следующие свойства формы MediaPlayer:

MainMenuStrip --> menuStrip1
ShowInTaskBar --> false
TopMost --> true

Также я поместил Menu, contextMenu, openFileDialog, NotifyIcon, а после них таймер. Contextmenu назначен элементу NotifyIcon (чтобы отображать список недавно проигранных песен на панели задач).
 
Ниже приводится список пунктов меню в форме MainMenu (optionsToolStripMenuItem):

  • Open --> используется для отображения диалога выбора песен в системе;
  • Play --> проиграть выбранную песню;
  • Play --> приостановить проигрывание песни;
  • Play --> остановить проигрывание песни;
  • Top Most --> задать положение проигрывателя поверх всех окон;
  • Opacity --> скрыть проигрыватель;
  • Show In TaskBar --> показать или скрыть проигрыватель в панели задач;
  • Show Border --> показать или скрыть границу проигрывателя;
  • Set Default Songs Path --> задать путь к песням по умолчанию для автоматической их загрузки в проигрыватель;
  • Default Songs List --> список песен, расположенных по пути по умолчанию;
  • Empty Recent Files --> очистка списка недавно проигранных дорожек;
  • Recent Files --> недавно проигранные в приложении файлы;
  • Exit --> выход из приложения.

Элементы управления обладают следующими функциями:

  • элемент управления openFileDialog1 используется для отображения диалогового окна выбора песен;
  • элемент управления notifyIcon1 используется для отображения/скрытия проигрывателя;
  • элемент управления timer1 используется для периодической смены изображения в notifyIcon;
  • элемент управления RecentListcontextMenuStrip используется для отображения недавно проигранных песен.

Теперь я объясню все аспекты, которые относятся к коду данного приложения.

Я использовал следующие библиотеки COM: AxWMPLib, WMPLib.

Form_Load

В элементе управления Form_Load выполняется загрузка недавно выбранных песен из файла List.txt.Этот файл создается каждый раз, когда вы выбираете песню для проигрывания в плеере. Если какая-либо строка в List.txt начинается с "----", она считается путем к песням по умолчанию. Обычно мы храним все песни в системе в одной или паре папок для облегчения навигации. Эти папки являются папками по умолчанию. Если указать пути к ним в проигрывателе, он будет выполнять автоматическую загрузку песен из папок в плеер. В папке по умолчанию будет много записей (около 1000) и их загрузка потребует много времени. Чтобы компенсировать это, мы будем загружать эти песни в отдельном потоке.

Form_Closed

В элементе управления Form_Closed будет выполняться запись всех недавно проигранных песен в файл для дальнейшего использования. Также будет завершен поток загрузки песен из папки по умолчанию, если он еще работает.

Методы getDirs(),getFiles() используются рекурсивно для загрузки всех песен, расположенных по пути для песен по умолчанию.

А метод Invoke() используется для добавления элементов в пункт меню Default Songs List (список песен по умолчанию). Невозможно добавлять элементы напрямую в элемент управления, который создается другим потоком (Main thread).

Просто укажите пути по умолчанию для хранения музыки через точку с запятой (";") (например, C:\songs\;c:\New Songs\ и нажмите Ввод) в текстовом поле, указанном в пункте меню Set Default Songs Path. Теперь приложение загрузит все песни из этой папки в проигрыватель с возможностями простой навигации.

Наконец я добавил код для улучшения пользовательского интерфейса приложения. В итоге на выходе получается следующее.

Чтобы перейти к недавно проигранным песням, нажмите значок NotifyIcon на панели задач. Чтобы спрятать проигрыватель, дважды щелкните значок NotifyIcon.

Данное приложение можно совершенствовать, улучшая пользовательский интерфейс.

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