Replacing :
Func _WinAPI_SysAllocString($sString)
Local $aCall = DllCall("mfplat.dll", "handle", "OleAut32.dll", "wchar", $sString)
If @error Then Return SetError(__COM_GetDllError(), 0, 0)
Return $aCall[0]
EndFunc
with :
Func _WinAPI_SysAllocString($sString)
Local $aCall = DllCall("OleAut32.dll", "handle", "SysAllocString", "wstr", $sString)
If @error Then Return SetError(__COM_GetDllError(), 0, 0)
Return $aCall[0]
EndFunc ;==>_WinAPI_SysAllocString
And removing the , $oIMFEngine.CanPlay() in event handler proc.
Now starts correctly. But after a few events the script crashes. However from time to time, the event handler stops receiving messages and the video runs normally. In this particular case, you cannot stop the script with the close button. You need to interrupt it with task manager.