如何从 vb.net 的播放列表中显示媒体播放器正在播放的文件?

Posted

技术标签:

【中文标题】如何从 vb.net 的播放列表中显示媒体播放器正在播放的文件?【英文标题】:How to display which file is playing by Media Player from Playlist in vb.net ? 【发布时间】:2015-11-22 19:17:51 【问题描述】:

我正在使用 AxWindowsMediaPlayer 开发视频播放器的 vb.net 应用程序

我已经成功创建了一堆视频文件的播放列表,并且播放完美。

我的播放列表中有超过 2 个视频。

我想在播放列表中播放下一个视频文件时显示该文件名的消息框。

我应该使用哪个事件?以及如何显示当前正在播放的文件?

我使用下面的代码来创建播放列表。

    Private Sub PlayVideos()

        Try


        AxWindowsMediaPlayer1.uiMode = "full"


        Dim Playlist As IWMPPlaylist = AxWindowsMediaPlayer1.playlistCollection.newPlaylist("Playlist1")

            Dim VideoFile1 As WMPLib.IWMPMedia3 =  AxWindowsMediaPlayer1.newMedia(Path1.Trim)
        Playlist.appendItem(VideoFile1)

            Dim VideoFile2 As WMPLib.IWMPMedia3 = AxWindowsMediaPlayer1.newMedia(Path2.Trim)
        Playlist.appendItem(VideoFile2)

  AxWindowsMediaPlayer1.currentPlaylist = Playlist


        Catch ex As Exception
        End Try

    End Sub

【问题讨论】:

【参考方案1】:

这段代码应该这样做.. 将它添加到 PlayStateChange 事件。我有一个空的 try..catch 语句的原因是因为当媒体播放器正在更改项目时, playstatechange 事件会触发几次,但直到加载下一首曲目,currentmedia.name 属性为 null 并返回 System.NullReferenceException .最终 currentMedia.name 属性设置为新项目,一切都很愉快。可能有更好的方法来做到这一点,但它对我有用。

With AxWindowsMediaPlayer1
    Static Dim lasttrack As String = ""
    Try
        If .playState = WMPLib.WMPPlayState.wmppsPlaying And .currentMedia.name <> lasttrack Then
            MessageBox.Show("Current playing track is " & .currentMedia.name)
                lasttrack = .currentMedia.name
            End If
        Catch
        End Try
    End With

【讨论】:

不工作....我想在哪里写这段代码?播放下一个文件时必须有一些事件,在那个事件中它应该写? 如果您不确定如何操作,请单击代码选项卡。在代码窗口的顶部,您有几个下拉列表。在中间,选择您的媒体播放器控件。在右侧,选择PlayStateChanged。这应该创建一个新的事件处理程序子。只需将代码粘贴到那里即可。【参考方案2】:

处理CurrentItemChange 事件。

设置currentPlaylist属性后添加如下代码:

AddHandler AxWindowsMediaPlayer1.CurrentItemChange,
        Sub(s As Object, cic As AxWMPLib._WMPOCXEvents_CurrentItemChangeEvent)
            Dim new_item As IWMPMedia = cic.pdispMedia

            MsgBox(new_item.sourceURL)
        End Sub

【讨论】:

【参考方案3】:

playstate change help 检查是否对媒体播放器的操作更改将其添加到form1

 Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
        If (AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsPlaying) Then



            TextBox2.Text = "Opening..."
        End If
        With AxWindowsMediaPlayer1
            Static Dim lasttrack As String = ""
            Try
                If .playState = WMPLib.WMPPlayState.wmppsPlaying And .currentMedia.name <> lasttrack Then
                    TextBox1.Text = (.currentMedia.name)
                    lasttrack = .currentMedia.name




                End If
            Catch
            End Try
        End With

【讨论】:

以上是关于如何从 vb.net 的播放列表中显示媒体播放器正在播放的文件?的主要内容,如果未能解决你的问题,请参考以下文章

vb.net 中 如何实现 播放mp3文件

如何使用vb.net 2019从访问数据库中关系的另一个列表中查看特定列的所有数据主表

Windows 媒体播放器播放列表

如何获得列表大小 em VB .NET?

VB.NET 2005 - 无法绑定到新的显示成员 - 组合框 - 数组

如何确定 VB.NET ListView 是不是正在向用户显示垂直滚动条