2013-08-27 50 views
0

我使用的是Access 2010,並具有表設置以識別特定的視頻文件。我在窗體上有一個按鈕,用WindowsMediaPlayer啓動視頻文件。問題是我想在視頻運行後更新表格。我已經從表單上的一個按鈕(fTest1)創建了這個快捷方式,但我一直在搜索下一個部分。如何在媒體播放器完成後執行vba任務

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的測試,但它顯示了視頻播放時。尋找像一個電話或等到或什麼。

任何幫助,將不勝感激。

回答

1

經過測試磕磕絆絆,我發現一個由ghudson在access-programmers.co.uk發佈的文章爲以下功能。

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

如果您知道視頻的長度,唯一可行的方法是。然後,您可以將OnTimer事件設置爲「讓計算機進入睡眠」一段指定的時間。

+0

我嘗試了我發現的睡眠方法以及OnTimer,但都掛起Access直到我爆發。 –

0

另一種可能性是簡單地使用基於wmppsStopped的DoEvents循環和切出的暫停功能中間人:

Do Until player.playState = wmppsStopped 
    DoEvents 
Loop 

這只是不斷的循環去,但將控制權交給控制檯(以便訪問和Windows AREN 't「鎖定」)直到視頻結束。只要確保用戶不能關閉表格:移除控制盒並製作表格模式以確保它們不會隱藏它。

相關問題