- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:http://pastebin.com/EgjbzqA2这基本上只是 http://www.dreamincode.net/forums/topic/57357-mymusic-player/ 的精简版本。我想让程序重复播放一个文件,但是,由于某种原因,这个功能不起作用。程序播放每个文件一次,然后停止。
Private Sub Player3_PlayStateChange(ByVal NewState As Integer) Handles Player3.PlayStateChange
Static Dim PlayAllowed As Boolean = True
Select Case CType(NewState, WMPLib.WMPPlayState)
Case WMPLib.WMPPlayState.wmppsReady
If PlayAllowed Then
Player3.controls.play()
End If
Case WMPLib.WMPPlayState.wmppsMediaEnded
' Start protection (without it next wouldn't play
PlayAllowed = False
' Play track
Player3.controls.play()
' End Protection
PlayAllowed = True
updatePlayer()
End Select
End Sub
最佳答案
PlayAllowed doo-wop 是一种 hackorama,用于解决当您要求它在事件中执行其他操作时控件变得暴躁的问题。这经常会出错,他们不希望在触发事件时地垫会被猛拉。技术术语是它们不能很好地处理重入,这是一个非常常见的问题。
对于重入问题有一个非常优雅的解决方案,关键是在引发事件之后延迟再次播放同一首歌曲的请求。在 Winforms 中,您可以通过使用 Control.BeginInvoke() 轻松获得这样的延迟,目标在一切稳定下来后运行。其技术术语是“等待程序重新进入消息循环”。这在此代码上效果很好,我使用此代码一遍又一遍地循环播放同一首歌曲没有遇到任何问题,并在 Windows 8 上进行了测试:
Public Class Form1
Dim WithEvents Player3 As New WMPLib.WindowsMediaPlayer
Dim Song As String = "c:\temp\ding.wav"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PlayCurrentSong()
End Sub
Private Sub Player3_PlayStateChange(ByVal NewState As Integer) Handles Player3.PlayStateChange
If NewState = WMPLib.WMPPlayState.wmppsMediaEnded Then
Me.BeginInvoke(New MethodInvoker(AddressOf PlayCurrentSong))
End If
End Sub
Private Sub PlayCurrentSong()
Player3.URL = Song
Player3.controls.play()
End Sub
End Class
根据需要调整代码,因为它与您的代码不太匹配。最重要的部分是 PlayStateChanged 事件处理程序中的 Me.BeginInvoke() 调用。
关于vb.net - 无法在 Visual Basic 中调用 WMP 的controls.play() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770806/
我可以在商业应用程序中使用对 wmpLib.ddl/wmp.dll (\windows\system32\wmp.dll) 的引用吗? 我正在使用 Visual Studio 2008 Express
我可以在商业应用程序中使用对 wmpLib.ddl/wmp.dll (\windows\system32\wmp.dll) 的引用吗? 我正在使用 Visual Studio 2008 Express
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我的项目是构建一个简单的游戏,现在我只制作了主菜单 Form1有 5 个按钮。按钮有 MouseClick和 MouseEnter在他们身上,我有一个使用 WMP 方法(使用 WMPLib 和 axW
我想要做的是设置 Windows Media Player 的音量级别。默认情况下,音量增加/减少 10%。单击向下或向上菜单项(播放 -> 音量 -> 向上),但在我看来,这还不够好(尤其是在例如边
我想在我的应用程序中使用系统可用的 Windows Media Player 可视化工具。显然,可视化工具公开了一个 IWMPEffects与世界的接口(interface)。我的问题是如何枚举和创建
所以,我一直在为声音文件制作一个小可视化工具,只是为了好玩。我基本上想模仿 Windows Media Player 中的“Scope”和“Ocean Mist”可视化工具。 Scope 很容易,但我
我有一个 WMP 播放器对象,我正在尝试添加一个事件监听器来拦截发送到播放器的 ScriptCommand。我的回调不是附加到 WMP 对象,而是立即被调用,然后 ScriptCommand 就不会被
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我正在编写一个视频 DMO 解码器并尝试将位图返回到 WMP 渲染器以供显示......但是 WMP 将其显示颠倒! 这是代码: HBITMAP* hBmp = new HBITMAP(); int
尝试将 0.02 fps 的 1 小时视频转换为 10 fps 的非常短的视频(加速 100 倍)以包含在 powerpoint 演示文稿中。 我这样做了: ffmpeg - input.mp4 -f
安装 Visual Studio 2017 RC 后,我有一些无法构建的代码。我已将范围缩小到 WMP 和 .NET Framework 2(它在 Framework 4 下工作) 最基本的测试设置是
我正在使用 C# 尝试检索当前正在播放的歌曲的名称并将其显示在列表框中,因此播放的每首歌曲都会显示在列表框中。 Using System; Using WMPLib; public IWMPMedia
我有一个 WCF 服务,它对媒体文件进行故事化,并以 Stream 对象的形式将它们返回给使用应用程序。当消费应用程序想要使用 MediaElement 流式传输媒体时,就会出现问题。众所周知,Med
我有以下代码:http://pastebin.com/EgjbzqA2这基本上只是 http://www.dreamincode.net/forums/topic/57357-mymusic-play
我正在尝试在我的 Win32 应用程序中嵌入一个 WMP 控件。我在这里遵循了示例代码:Hosting the Windows Media Player Control in a Windows Ap
我使用 axWindowsMediaPlayer 控件播放视频,我使用以下方法通过移动搜索来显示当前视频帧。 axWindowsMediaPlayer1.settings.setMode("showF
我是一名优秀的程序员,十分优秀!