2017-06-19 15 views
0

ich ein Windows Media Player-ActiveX-Steuerelement (WMPlayer2) und zwei Befehlsschaltflächen hinzugefügt habe, nämlich, cmd_PlayVideo und cmd_GetTimeCode auf einem Excel-Sheet. Ich möchte ein Video im Windows Media Player wiedergeben und den Timecode des Videos erfassen, wenn ich während der Wiedergabe des Videos auf die Schaltfläche cmd_GetTimeCode klicke.Excel VBA mit Windows Media Player: Laufzeitfehler beim Abrufen der Video-Timecode

seit den currentPositionTimecode Eigentum in IWMPControls3 Schnittstelle verfügbar ist, habe ich den Rückgabewert von WMPlayer2.controls auf die IWMPControls3-Schnittstelle umgewandelt. Die Zeile 'MsgBox controls.currentPositionTimecode' löst jedoch aus:

Laufzeitfehler 430: "Klasse unterstützt keine Automatisierung oder unterstützt keine erwartete Schnittstelle

Die anderen Eigenschaften der IWMPControls3 Schnittstelle wie audioLanguageCount, currentAudioLanguage, currentItem, controls.getAudioLanguageID, getLanguageName, und getAudioLanguageDescription funktionieren.

Wie kann ich den Timecode des Videos bekommen?

Hier ist mein Code in 2 Tasten.

Private Sub cmd_PlayVideo_Click() 

MsgBox Application.Sheets("Sheet1").Range("B2") 
WMPlayer2.URL = Application.Sheets("Sheet1").Range("B2") 

End Sub 

Private Sub cmd_GetTimeCode_Click() 

Dim controls As WMPLib.IWMPControls3 
Dim Media As WMPLib.IWMPMedia 
Set controls = WMPlayer2.controls 

MsgBox controls.audioLanguageCount 
MsgBox controls.currentAudioLanguage 
If controls.isAvailable("currentItem") Then 
    Set Media = controls.currentItem 
    MsgBox Media.durationString 
    MsgBox Media.Name 
    MsgBox Media.SourceUrl 
End If 

MsgBox controls.getAudioLanguageID(1) 
MsgBox controls.getLanguageName(1) 
MsgBox controls.getAudioLanguageDescription(1) 
MsgBox controls.currentPositionTimecode 

End Sub 

Antwort

-1

Ich habe, dass die Parameter currentPositionTimecode Lesen bemerkt nur den Fehler wirft, sobald die Medien-Wiedergabe beginnt. Das heißt, es scheint, dass es die Timecode-Position ohne Fehler nur liest, wenn die Medienposition auf Null zurückgesetzt ist (z. B. [00000] 00:00:00). Ich vermute, dass es ein Flag geben muss, um dies zu aktivieren (wie CanScan?) Oder vielleicht unterstützt das Medium SMPTE Timecode nicht. Ich recherchiere immer noch.

Verwandte Themen