Criando o controle de Reprodutor Multimídia do Windows programaticamente

[O recurso associado a esta página, Reprodutor Multimídia do Windows SDK, é um recurso herdado. Foi substituído pelo MediaPlayer. O MediaPlayer foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o MediaPlayer em vez de Reprodutor Multimídia do Windows SDK, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Quando você adiciona o controle Reprodutor Multimídia do Windows a um formulário da Caixa de Ferramentas, um objeto da classe AxWMPLib.AxWindowsMediaPlayer é criado. Essa classe wrapper fornece ao Player toda a funcionalidade de um controle ActiveX, incluindo o acesso às propriedades da interface do usuário, como Localização e Tamanho.

Se você não precisar das propriedades expostas pelo AxWindowsMediaPlayer ou se o aplicativo não tiver uma interface gráfica do usuário, você poderá criar um controle Player programaticamente. Nesse caso, você cria um objeto da classe WMPLib.WindowsMediaPlayer .

Observação

Como o objeto WindowsMediaPlayer não é encapsulado como um controle ActiveX, ele não tem nenhuma propriedade herdada de System.Windows.Forms.Control. Como resultado, a propriedade Controls não é renomeada para CtlControls, como é em AxWindowsMediaPlayer.

 

Para criar o controle Reprodutor Multimídia do Windows programaticamente, primeiro você deve adicionar uma referência a wmp.dll, que é encontrada na pasta \Windows\system32. Adicionar essa referência cria WMPLib.dll na pasta do projeto e uma referência ao WMPLib aparece em Gerenciador de Soluções.

O código de exemplo a seguir, parte de uma classe Form1, mostra como criar um objeto Player e reproduzir um arquivo. Quando a reprodução termina ou se o arquivo não pode ser reproduzido, o formulário é fechado.

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();
}


Inserindo o controle Reprodutor Multimídia do Windows em uma solução de .NET Framework