Что нового

Не вызываются ActiveX методы в объекте ViewRightActiveXControl

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
UnEpicFail [?]
нет, не висит. процесс ViewRight.exe появляется только при запуске плеера ViewRight )))
Рис. 1

Давайте по порядку.Во первых ActiveX и есть клиент.
Нет, это ActiveX для управления плеером.

и еще она же работает если ее подключать через HTML
Следовательно... ;)
И еще один небольшой нюанс, когда я запускаю скрипт на AutoIt я вижу в логах удачное общение клиента и сервера. Соответственно клиент нормально подымается и готов к работе, но вот методы не вызываются.

Они вызываются, только ActiveX не проверяет готов ли клиент к запросу или нет. Вследствие этого и вываливается ошибка! Просто поставьте перед вызовом метода
Код:
Sleep(8000)

или больше.
Рис. 2
 
Автор
UnEpicFail

UnEpicFail

Новичок
Сообщения
24
Репутация
0
Код:
Dim $oRightControl= ObjCreate('ViewRightActiveXControl.ViewRightCont.1')
If Not IsObj($oRightControl) Then
    Msgbox(0,"Error","Create Object failed.")
EndIf
ConsoleWrite("Created Object --> " & ObjName($oRightControl) & @CRLF)
While Not ProcessExists("ViewRight.exe")
    Sleep(4000)
    ConsoleWrite($oRightControl.GetClientID & @CRLF)
WEnd


Почему, почему у меня этот код вылетает с "Create Object failed." ?

есть вместо
Код:
ViewRightActiveXControl.ViewRightCont.1

писать
Код:
VIEWRIGHTACTIVEX.ViewRightActiveXCtrl.1


я вижу это
Код:
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\autoIt\Object 117\activeX.au3"    
Created Object --> _DViewRightActiveXControlSDK
D:\autoIt\Object 117\activeX.au3 (8) : ==> The requested action with this object has failed.:
ConsoleWrite($oRightControl.GetClientID & @CRLF)
ConsoleWrite($oRightControl.GetClientID ^ ERROR
>Exit code: 1    Time: 5.442

Sleep ставил вплоть до двух минут, результат тот же.

Увидев сообщение о том что у вас получилось в моей душе появилась надежда, но пока реализовать у себя не получается :(

а какая у вас версия плеера? возможно в этом проблема?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
UnEpicFail [?]
Я упустил там закрывающую скобку:

Код:
MsgBox(0, "Error", Execute('$viewRightControl.getClientID()'))

Но судя по всему это не поможет.
 
Автор
UnEpicFail

UnEpicFail

Новичок
Сообщения
24
Репутация
0
Код:
MsgBox(0, "Error", Execute('$viewRightControl.getClientID()'))


вообще то не много помогло, я больше не получаю ошибки, я получаю просто пустое сообщение.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
UnEpicFail [?]
а какая у вас версия плеера?
Для теста, мной был взят плеер ViewRight PC Player 1.1.0.9
:shok:ops: Есть, есть всё же метод, который контролирует состояние плеера.

GetPlayerState - "готов" = 1; "не готов" = 0

Код:
Dim $oRightControl= ObjCreate('ViewRightActiveXControl.ViewRightCont.1')
If Not IsObj($oRightControl) Then 
    Msgbox(0,"Error","Create Object failed.")
EndIf
ProcessWait("ViewRight.exe")
While 1
	If $oRightControl.GetPlayerState = 1 Then
		MsgBox(0, "Client ID", $oRightControl.GetClientID)
		ExitLoop
	EndIf
WEnd
 
Автор
UnEpicFail

UnEpicFail

Новичок
Сообщения
24
Репутация
0
Изначально этот код ушел в бесконечный цикл, ждал минут 10.
Решил запустить вручную клиент дабы пройти условие

Код:
ProcessWait("ViewRight.exe")


в результате свалился с ошибкой :( рис1




Добавлено:
Сообщение автоматически объединено:

Боюсь версия ViewRight PC Player 1.1.0.9 уже устарела.
Нужна версия старше 2.3.2.3
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Автор
UnEpicFail

UnEpicFail

Новичок
Сообщения
24
Репутация
0
Верх