0

我正在使用 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 进行了测试,但它在视频播放时出现。寻找喜欢的电话或等到什么的。

任何帮助,将不胜感激。

4

3 回答 3

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”的测试表单上。我没有得到“没有回应”或忙碌的“圈子”。奇迹般有效。

于 2013-08-28T01:34:01.913 回答
0

另一种可能性是简单地使用基于 wmppsStopped 的 DoEvents 循环并去掉 Pause 函数中间人:

Do Until player.playState = wmppsStopped
    DoEvents
Loop

这只是保持循环,但将控制权传递给控制台(因此 Access 和 Windows 不会“锁定”),直到视频结束。只要确保用户不能关闭表单:移除控制框并使表单模式化以确保他们不会隐藏它。

于 2013-11-27T19:06:54.867 回答
-1

唯一可行的方法是如果您知道视频的长度。然后,您可以放置​​一个 OnTimer 事件以在指定的时间内“使计算机进入睡眠状态”。

于 2013-08-27T01:38:56.073 回答