我正在使用Access 2010并设置表格以识别特定的视频文件。我在窗体上有一个按钮,可以使用WindowsMediaPlayer启动视频文件。问题是我想在视频运行后更新表格。我已经从表格上的按钮(fTest1)快速创建了这个,但下一部分我已经搜索了一段时间。
Private Sub Command1_Click()
Dim player As WindowsMediaPlayer
DoCmd.OpenForm "fTest2"
Set player = Forms!fTest2!WMP.Object
Forms!fTest2!WMP.URL = "S:\Training Videos\Wildlife.wmv"
' here is where I want to do something after the file has finished
'
我使用msgbox进行了测试,但在播放视频时显示出来。寻找呼唤或等到或等等。
任何帮助都将不胜感激。
答案 0 :(得分:1)
在测试中遇到磕磕绊后,我在access-programmers.co.uk上发了一篇由ghudson发布的帖子,用于以下功能。
Public Function Pause(NumberOfSeconds As Variant)
On Error GoTo Err_Pause
Dim PauseTime As Variant, start As Variant
PauseTime = NumberOfSeconds
start = Timer
Do While Timer < start + PauseTime
DoEvents
Loop
Exit_Pause:
Exit Function
Err_Pause:
MsgBox Err.Number & " - " & Err.Description, vbCritical, "Pause()"
Resume Exit_Pause
End Function
Private Sub Command1_Click()
Dim player As WindowsMediaPlayer
Dim VideoDone As String
DoCmd.OpenForm "fTest2"
Set player = Forms!ftest2!WMP.Object
Forms!ftest2!WMP.URL = "S:\Training Videos\Wildlife.wmv"
VideoDone = "No"
Pause 5
Do While VideoDone = "No"
Pause 2
If player.playState = wmppsStopped Then VideoDone = "Yes"
Loop
player.Close
DoCmd.Close acForm, "fTest2"
End Sub
该按钮位于名为“fTest1”的测试表单上。我没有“没有回应”或忙于“圈子”。像魅力一样。
答案 1 :(得分:0)
另一种可能性是简单地使用基于wmppsStopped的DoEvents循环并删除Pause函数中间人:
Do Until player.playState = wmppsStopped
DoEvents
Loop
这只是保持循环,但将控制传递给控制台(因此Access和Windows不会“锁定”),直到视频结束。只需确保用户无法关闭表单:删除控件框并制作表单模式以确保它们不会隐藏它。
答案 2 :(得分:-1)
唯一可行的方法是,如果你知道视频的长度。然后,您可以将OnTimer事件置于“让计算机进入睡眠状态”指定的时间内。