如何从 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 2019从访问数据库中关系的另一个列表中查看特定列的所有数据主表