2013-08-27 7 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"라는 시험 양식에 있습니다. 나는 "응답하지 않는"또는 바쁜 "서클"을 얻지 못합니다. 매력처럼 작동합니다.

Do Until player.playState = wmppsStopped 
    DoEvents 
Loop 

이 그냥가는 루프를 유지하지만, 콘솔 (그래서 액세스 및 Windows 때로 믿을 수로 제어를 전달합니다

-1

동영상의 길이를 알고있는 경우에만 작동하는 유일한 방법입니다. 그런 다음 지정된 시간 동안 OnTimer 이벤트를 "컴퓨터를 절전 상태로 설정"할 수 있습니다.

+0

내가 깨달을 때까지 OnTimer뿐만 아니라 발견 한 수면 방법을 시도했지만 두 가지 모두 액세스가 중단되었습니다. –

0

또 다른 가능성은 단순히 wmppsStopped에 따라 DoEvents 루프를 사용하고 일시 정지 기능 중개인을 잘라하는 것 't "잠김") 동영상이 끝날 때까지 사용자가 폼을 닫을 수 없는지 확인하십시오 : 컨트롤 박스를 제거하고 양식을 숨기지 않도록 모달로 만듭니다.