vb.net - 在 VB.NET 中检测音乐是否结束

标签 vb.net if-statement events while-loop background-music

标题说明了一切 - 我在 VB.NET 中使用 Windows Media Player 作为我正在制作的音乐播放器的基础。我有以下代码来检测当前播放的 .mp3 文件是否已结束:

            'Checks to see if the player is still playing music
            While WMPLib.WMPPlayState.wmppsPlaying
                    If WMPLib.WMPPlayState.wmppsMediaEnded Then
                    MessageBox.Show("Playing next song")
                    End If
            End While

while 检查可以成功地看到正在播放音乐文件,但是 IF 语句没有检测到音乐文件何时结束,它实际上在媒体当前正在播放时返回 true。如何让它检测音乐文件何时播放完毕?

最佳答案

您可以使用 CurrentItemChange() 和 PlayStateChange() 事件来查看播放器中发生的情况:

Private Sub AxWindowsMediaPlayer1_CurrentItemChange(sender As Object, e As AxWMPLib._WMPOCXEvents_CurrentItemChangeEvent) Handles AxWindowsMediaPlayer1.CurrentItemChange
    Debug.Print("CurrentItemChange: " & Me.AxWindowsMediaPlayer1.currentMedia.name)
End Sub

Private Sub AxWindowsMediaPlayer1_PlayStateChange(sender As Object, e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
    Select Case e.newState
        Case 1 ' Stopped
            Debug.Print("Stopped")

        Case 2    ' Paused
            Debug.Print("Paused")

        Case 3 ' Playing
            Debug.Print("Playing")

        Case 4 ' ScanForward
            Debug.Print("ScanForward")

        Case 5 ' ScanReverse
            Debug.Print("ScanReverse")

        Case 6 ' Buffering
            Debug.Print("Buffering")

        Case 7 ' Waiting
            Debug.Print("Waiting")

        Case 8 ' MediaEnded
            Debug.Print("MediaEnded")

        Case 9 ' Transitioning
            Debug.Print("Transitioning")

        Case 10 ' Ready
            Debug.Print("Ready")

        Case 11 ' Reconnecting
            Debug.Print("Reconnecting")

        Case 12 ' Last
            Debug.Print("Last")

        Case Else
            Debug.Print("Undefined/Unknown: " & e.newState)

    End Select
End Sub

关于vb.net - 在 VB.NET 中检测音乐是否结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28251662/

相关文章:

javascript onclick事件,同一元素的每次点击都有不同的功能

asp.net - 如何在 asp.net 中加载页面时显示加载消息或设计?

.net - 如何使用 "For Each"循环修改字符串?

vb.net - 查找连接我的设备的串行端口

r - 如果语句条件错误在两个和问题中缺少值?

php - WordPress php : Way to test if pages are children of a parent page?

javascript - 从 SQL 查询获取值到文本框

bash - Bash 中 "and"语句的 "if"运算符

css - 将 Primefaces Jar 3.3 替换为 4.0 后,primefaces 计划事件颜色不起作用

c# - WPF slider ValueChanged 事件的频率