【问题标题】:How to display which file is playing by Media Player from Playlist in vb.net ?如何从 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

【问题讨论】:

    标签: vb.net media


    【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-17
        相关资源
        最近更新 更多