martes, 11 de septiembre de 2012

Reproductor de música en Visual Studio.NET


Hola todos los seguidores de mi blogg en esta oportunidad les traigo una aplicación que permitirá elegir del explorador de Windows uno o varios archivos de musica y listarlos para luego reproducirlos en el reproductor de Windows.

Bien, pasare a explicar los controles que va a contener nuestra aplicación:
El primer paso es agregar el control ActiveX del reproductor WindowsMediaPlayer a nuestro proyecto. Para ello de anticlick sobre la barra de controles y luego elija la opción elegir elementos.... Una vez dentro de la pantalla pulse sobre la pestaña "Componentes COM", en ella buscamos y seleccionamos "Windows Media Player", de esta manera se añade un elemento nuevo en el cuadro de herramientas, llamado Windows Media Player el cual lo agregaremos a nuestro formulario.


El siguiente paso sera configurar las propiedades del control AxWindowsMediaPlayer1 elegimos las propiedades como se muestra en las siguientes imagenes:


6 botones: [Buscar Música][Reproducir][Detener][siguiente][Anterior][salir]
3Label,1 Listbox, 1OpenFileDialog,1Reproductor Windows Media y un timer que sera el que muestre el tiempo transcurrido de la canción.
El formulario quedara como se muestra en la siguiente imagen:


Ahora si el código Fuente:



Public Class Form1

    Public tiempo As Date ' para el tiempo transcurrido
    Private posicion As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        OpenFileDialog1.Title = "Seleccione uno o varios archivos..."
        Me.OpenFileDialog1.InitialDirectory = "C:\MUSICA"
        Me.OpenFileDialog1.Filter = "Formato de música (*.mp3)|*.mp3|Formato de Video (*.mpg)|*.mpg"
        OpenFileDialog1.RestoreDirectory = True
        OpenFileDialog1.ShowDialog()

        Dim archivos As IEnumerator
        archivos = OpenFileDialog1.FileNames.GetEnumerator

        ListBox1.Items.Clear()

        While archivos.MoveNext
            ListBox1.Items.Add(archivos.Current)
        End While

        ListBox1.TopIndex = 0
        Label1.Text = "Archivos de Audio o Video = " + ListBox1.Items.Count.ToString
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        AxWindowsMediaPlayer1.URL = ListBox1.Text
        AxWindowsMediaPlayer1.Ctlcontrols.play()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        End
    End Sub


    Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
        'dependiendo del estado del reproductor
        Select Case e.newState
            Case WMPLib.WMPPlayState.wmppsPlaying ' si reproduciendo
                Timer1.Start()
                Label2.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("title") _
                & Chr(13) & AxWindowsMediaPlayer1.currentMedia.getItemInfo("author")

                tiempo = Now
                Label4.Text = AxWindowsMediaPlayer1.currentMedia.durationString

            Case WMPLib.WMPPlayState.wmppsStopped ' si detenido
                Label2.Text = "Sin Reproducción..."
                Label3.Text = ""
                Label4.Text = ""
                Timer1.Stop()
        End Select

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Dim Minutos, Segundos As Integer
        ' Variable Segundos = diferencia en segundos entre una hora y la hora actual
        Segundos = DateDiff(DateInterval.Second, Date.Parse(tiempo), Now)
        Minutos = Segundos \ 60
        'Para que no supere 59
        Segundos = Segundos - (Minutos * 60)
        'Presentación formateada del tiempo transcurrido
        Label3.Text = Format(Minutos, "00") & ":" & Format(Segundos, "00")

    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        posicion = ListBox1.SelectedIndex

        If ListBox1.GetSelected(posicion) = True Then
            posicion = posicion + 1

            If posicion <= ListBox1.Items.Count Then
                ListBox1.SetSelected(posicion, True)
                AxWindowsMediaPlayer1.URL = ListBox1.Items(posicion)
                AxWindowsMediaPlayer1.Ctlcontrols.play()
            Else
                Button4.Enabled = False
                Button5.Enabled = True
            End If

        End If

    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        If ListBox1.SelectedItems.Count > 0 Then
            Button2.Enabled = True
        End If
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        posicion = ListBox1.SelectedIndex

        If ListBox1.GetSelected(posicion) = True Then
            posicion = posicion - 1

            If posicion >= 0 Then
                ListBox1.SetSelected(posicion, True)
                AxWindowsMediaPlayer1.URL = ListBox1.Items(posicion)
                AxWindowsMediaPlayer1.Ctlcontrols.play()
            Else
                Button4.Enabled = True
                Button5.Enabled = False
            End If

        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Timer1.Stop()
    End Sub


End Class




OJO para q funcione la opción de agregar varias canciones o vídeos a la lista tienen que activar la opción Multiselet del OpenFileDialog1

Nuestro reproductor quedara así:




4 comentarios:

  1. Hola disculpa estoy haciendo lo mismo que tu reproductor,quisiera saber como puedo hacer que en vez de que se agreguen solo el nombre de las canciones en el listbox y no la ruta de las canciones y agregar el boton de pause? espero tu ayuda

    ResponderEliminar
  2. como puedo insertar audio en un boton

    ResponderEliminar
    Respuestas
    1. my.computer.audio.play(My.resources.nombredelaudio,Audioplaymode.background)

      Eliminar
  3. Cuando busco la cancion en el cuadro me aparece openfiledialog1 que pasa

    ResponderEliminar