Crear el control Reproductor multimedia de Windows mediante programación

[La característica asociada a esta página, Reproductor multimedia de Windows SDK, es una característica heredada. Se ha reemplazado por MediaPlayer. MediaPlayer se ha optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer en lugar de Reproductor multimedia de Windows SDK, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Al agregar el control Reproductor multimedia de Windows a un formulario desde el Cuadro de herramientas, se crea un objeto de la clase AxWMPLib.AxWindowsMediaPlayer. Esta clase contenedora proporciona al Reproductor toda la funcionalidad de un control ActiveX, incluido el acceso a las propiedades de la interfaz de usuario, como Ubicación y Tamaño.

Si no necesita las propiedades expuestas por AxWindowsMediaPlayer o si la aplicación no tiene una interfaz gráfica de usuario, puede crear un control Player mediante programación. En este caso, se crea un objeto de la clase WMPLib.WindowsMediaPlayer .

Nota:

Dado que el objeto WindowsMediaPlayer no está ajustado como un control ActiveX, no tiene propiedades heredadas de System.Windows.Forms.Control. Como resultado, la propiedad Controls no se cambia de nombre a CtlControls, ya que está en AxWindowsMediaPlayer.

 

Para crear el control Reproductor multimedia de Windows mediante programación, primero debe agregar una referencia a wmp.dll, que se encuentra en la carpeta \Windows\system32. Al agregar esta referencia, se crea WMPLib.dll en la carpeta del proyecto y aparece una referencia a WMPLib en Explorador de soluciones.

En el código de ejemplo siguiente, parte de una clase Form1, se muestra cómo crear un objeto Player y reproducir un archivo. Cuando finaliza la reproducción o si no se puede reproducir el archivo, se cierra el formulario.

Dim WithEvents Player As WMPLib.WindowsMediaPlayer

Private Sub PlayFile(ByVal url As String)
    Player = New WMPLib.WindowsMediaPlayer
    Player.URL = url
    Player.controls.play()
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
                       Handles MyBase.Load
    ' TODO  Insert a valid path in the line below.
    PlayFile("c:\media\myaudio.wma")
End Sub

Private Sub Player_MediaError(ByVal pMediaObject As Object) _
                              Handles Player.MediaError
    MessageBox.Show("Cannot play media file.")
    Me.Close()
End Sub

Private Sub Player_PlayStateChange(ByVal NewState As Integer) _
                                   Handles Player.PlayStateChange
    If NewState = WMPLib.WMPPlayState.wmppsStopped Then
        Me.Close()
    End If
End Sub

WMPLib.WindowsMediaPlayer Player;

private void PlayFile(String url)
{
    Player = new WMPLib.WindowsMediaPlayer();
    Player.PlayStateChange += 
        new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
    Player.MediaError += 
        new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
    Player.URL = url;
    Player.controls.play();
}

private void Form1_Load(object sender, System.EventArgs e)
{
    // TODO  Insert a valid path in the line below.
    PlayFile(@"c:\myaudio.wma");
}

private void Player_PlayStateChange(int NewState)
{
    if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
    {
        this.Close();
    }
}

private void Player_MediaError(object pMediaObject)
{
    MessageBox.Show("Cannot play media file.");
    this.Close();
}


Inserción del control de Reproductor multimedia de Windows en una solución de .NET Framework