以编程方式创建Windows 媒体播放器控件

[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

从工具箱将 Windows 媒体播放器 控件添加到窗体时,将创建类 AxWMPLib.AxWindowsMediaPlayer 的对象。 此包装类为 Player 提供 ActiveX 控件的所有功能,包括对 UI 属性(如位置和大小)的访问权限。

如果不需要 AxWindowsMediaPlayer 公开的属性,或者应用程序没有图形用户界面,则可以以编程方式创建 Player 控件。 在这种情况下,将创建 WMPLib.WindowsMediaPlayer 类的对象。

注意

由于 WindowsMediaPlayer 对象未包装为 ActiveX 控件,因此它没有任何从 System.Windows.Forms.Control 继承的属性。 因此, Controls 属性不会重命名为 CtlControls,因为它在 AxWindowsMediaPlayer 中

 

若要以编程方式创建Windows 媒体播放器控件,必须先添加对 wmp.dll 的引用,该引用位于 \Windows\system32 文件夹中。 添加此引用会在项目文件夹中创建WMPLib.dll,并且对 WMPLib 的引用将显示在解决方案资源管理器中。

以下示例代码(Form1 类的一部分)演示如何创建 Player 对象并播放文件。 播放结束时,或者如果文件无法播放,则关闭窗体。

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


在.NET Framework解决方案中嵌入Windows 媒体播放器控件