Imports System.Text
Public Class Form1
'Declaramos la función que nos permitirá utilizar los comandos de MCI
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal _
uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
Private Sub btnSelCarpeta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelFichero.Click
Dim ofd As OpenFileDialog = New OpenFileDialog()
Dim fichero As String, longitud As String = " "
Dim minutos As Integer, segundos As Integer
'Obtenemos el fichero que queremos abrir (mostramos sólo archivos de video y audio)
ofd.Filter = "Audio|*.wav;*.mp3|Video|*.avi;*.wmv;*.mpg"
If ofd.ShowDialog() = DialogResult.OK Then
'Establecemos el volumen por defecto
tbVolumen.Value = 500
fichero = Chr(34) & ofd.FileName & Chr(34)
'Nos aseguramos de que el fichero está cerrado antes de abrirlo
mciSendString("close miFichero", Nothing, 0, 0)
mciSendString("open " & fichero & " type mpegvideo alias miFichero parent " & pnlPantalla.Handle.ToInt32 & " style child", Nothing, 0, 0)
mciSendString("set miFichero time format ms", Nothing, 0, 0)
'Obtenemos la duración de la reproducción en ms e inicializamos el control trackBar y la etiqueta con el tiempo total de reproducción
mciSendString("status miFichero length", longitud, 128, 0)
tPosicion.Enabled = True
tbPosicion.Minimum = 0
tbPosicion.Maximum = Val(longitud)
minutos = Math.Floor(Val(longitud) / 60000)
segundos = (Val(longitud) \ 1000) Mod 60
lblTiempoTotal.Text = minutos.ToString & ":" & String.Format("{0:00}", segundos).Substring(0, 2)
'Inicializamos el control de volumen y mostramos el video (si existe) en el panel correspondiente
mciSendString("setaudio miFichero volume to " & tbVolumen.Value.ToString, Nothing, 0, 0)
mciSendString("put miFichero window at 0 0 " & pnlPantalla.Width & " " & pnlPantalla.Height, Nothing, 0, 0)
End If
End Sub
'Operaciones a realizar cuando se pulsa el botón reproducir
Private Sub btnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlay.Click
'Se ajusta el volumen al valor seleccionado en el control correspondiente
mciSendString("setaudio miFichero volume to " & tbVolumen.Value.ToString, Nothing, 0, 0)
'Habilitamos el temporizador por si la reproducción había sido pausada antes de pulsar el botón reproducir
tPosicion.Enabled = True
'Se reproduce el archivo desde el inicio
mciSendString("play miFichero from 0", Nothing, 0, 0)
End Sub
'Operaciones a realizar cuando se pulsa el botón salir
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
'Cerramos el fichero
mciSendString("close miFichero", Nothing, 0, 0)
'Cerramos la aplicación
Application.Exit()
End Sub
'Operaciones a realizar cuando se pulsa el botón pausar
Private Sub btnPause_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPause.Click
Dim longitud As String = " ", formato As String = " "
Dim aCars() As Char = {"0"c}
If tPosicion.Enabled = True Then
'Si el fichero se está reproduciendo lo pausamos
tPosicion.Enabled = False
mciSendString("pause miFichero", Nothing, 0, 0)
Else
'Si el fichero no se está reproduciendo lo continuamos reproduciendo
tPosicion.Enabled = True
mciSendString("resume miFichero", Nothing, 0, 0)
End If
End Sub
'Operación realizada al variar el control de volumen
Private Sub tbVolumen_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbVolumen.Scroll
mciSendString("setaudio miFichero volume to " & tbVolumen.Value.ToString, Nothing, 0, 0)
End Sub
'Operaciones realizadas cuando se pulsa el botón parar
Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click
Dim returnData As String = " "
mciSendString("stop miFichero", Nothing, 0, 0)
lblTiempo.Text = "00:00"
End Sub
'Operaciones a realizar al arrancar la aplicación
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Establecemos el volumen por defecto
tbVolumen.Value = 500
'Limpiamos el valor de los tiempos
lblTiempo.Text = ""
lblTiempoTotal.Text = ""
End Sub
'Operaciones realizadas cada vez que vence el temporizador que comprueba el estado de la reproducción
Private Sub tPosicion_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tPosicion.Tick
Dim returnData As String = " "
Dim minutos As Integer, segundos As Integer
'Obtenemos la posición actual de la reproducción y convertimos los milisegundos en minutos y segundos
mciSendString("status miFichero position", returnData, 128, 0)
tbPosicion.Value = Val(returnData)
minutos = Math.Floor(Val(returnData) \ 60000)
segundos = (Val(returnData) \ 1000) Mod 60
'Reflejamos la posición actual (en el formato mm:ss) en la etiqueta correspondiente
lblTiempo.Text = minutos.ToString & ":" & String.Format("{0:00}", segundos).Substring(0, 2)
End Sub
'Operaciones que se realizan cuando el usuario varía la posición del control trackBar que refleja la posición actual
'de la reproducción en curso
Private Sub tbPosicion_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbPosicion.Scroll
Dim posicion As Integer
Dim returnData As String = " "
'Obtenemos la posición seleccionada por el usuario mediante el trackBar (en ms)
posicion = tbPosicion.Value
'Indicamos que se inicie la reproducción desde la posición indicada (en ms)
mciSendString("play miFichero from " & posicion, returnData, 128, 0)
End Sub
End Class
No hay comentarios:
Publicar un comentario