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

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

若要在 Visual Basic .NET 应用程序中使用 Windows 媒体播放器 9 系列或更高版本的功能,请先将组件添加到窗体中,如将 Windows 媒体播放器 控件与 Microsoft Visual Studio 配合使用中所述

本部分介绍如何创建可播放视频并具有自定义播放和停止按钮的应用程序。

添加视频窗口

将 Windows 媒体播放器 控件添加到窗体。 调整控件的大小,然后将其放置在要显示视频窗口的位置。

选择Windows 媒体播放器控件,然后将 uiMode 属性更改为“none”。 此设置隐藏 UI 控件。 当用户播放视频时,该视频将显示在窗口中。 对于仅限音频的内容,将显示可视化效果。

添加两个按钮并调整窗体

现在,向窗体添加两个按钮。 选择第一个按钮,并将 Text 属性更改为“播放”。 选择第二个按钮,并将其 Text 属性更改为“Stop”。

添加播放代码

双击“ 播放 ”按钮以显示“代码”窗口。 将显示以下代码:

Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click

End Sub

将此行添加到子例程:

AxWindowsMediaPlayer1.URL = "c:\mediafile.wmv"

在前面的代码示例中,“axWindowsMediaPlayer1”是Windows 媒体播放器控件的默认名称,“c:\mediafile.wmv”是要播放的媒体名称的占位符。

如果已将 Windows 媒体播放器 SDK 中的数字媒体内容添加到 Windows 媒体播放器 中的库中,则可以改用以下代码:

axWindowsMediaPlayer1.currentPlaylist = _
    axWindowsMediaPlayer1.mediaCollection.getByName("mediafile")

由于 autoStart 属性默认为 true,因此设置 currentPlaylistURL 属性时,Windows 媒体播放器将开始播放。

添加停止代码

双击“ 停止 ”按钮以显示“代码”窗口。 将显示以下代码:

Private Sub Button2_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click

End Sub

将此行添加到子例程:

AxWindowsMediaPlayer1.Ctlcontrols.stop()

注意

Windows 媒体播放器 控件的托管代码包装器将 Controls 对象公开为 Ctlcontrols,以避免与继承自 System.Windows.Forms.ControlControls 属性冲突。

 

添加错误处理

Windows 媒体播放器 控件在遇到错误(例如 URL 无效)时不会引发异常。 相反,控件向事件发出信号。 应用程序应处理播放器发送的错误事件。

若要创建事件处理程序,请打开窗体类的代码窗口。 从窗口顶部的下拉列表中,选择Windows 媒体播放器控件。 事件列表显示在右侧的下拉列表中。 在该列表中,选择“ MediaError”。 将显示以下代码:

Private Sub AxWindowsMediaPlayer1_MediaError(ByVal sender As Object, _
    ByVal e As _WMPOCXEvents_MediaErrorEvent) Handles AxWindowsMediaPlayer1.MediaError

End Sub

可以在子例程中插入以下代码,以提供最少的错误处理功能。 请注意,可以从 _WMPOCXEvents_MediaErrorEvent 参数检索有关错误的信息。

Try
    ' If the file is corrupt or missing, show the 
    ' hexadecimal error code and URL.
    Dim errSource As WMPLib.IWMPMedia2 = e.pMediaObject
    Dim errorItem As WMPLib.IWMPErrorItem = errSource.Error
    MessageBox.Show("Media error " + errorItem.errorCode.ToString("X") _
                    + " in " + errSource.sourceURL)
Catch ex As InvalidCastException
    ' In case pMediaObject is not an IWMPMedia item.
    MessageBox.Show("Player error.")
End Try

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