Что нового

[Ошибки] Ошибка IENavigate, $_IEStatus_InvalidObjectType

Marx

Новичок
Сообщения
26
Репутация
0
Ребята снова прошу помочь мне... Программа работает, но при запуске выдает такую некритичную ошибку "IE.au3 V2.4-0 Error from function _IENavigate, $_IEStatus_InvalidObjectType", по всей видимости именно она мешает мне нормально автоматизировать internet explorer. В чём может быть проблема?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: [Ошибки] Непонятная ошибка

Marx [?]
В чём может быть проблема?
в неправильном расположении луны, по отношению к юпитеру.

а если серьезно, то во первых
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Ошибки] Непонятная ошибка" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.










во вторых, предоставь код.
 
Автор
M

Marx

Новичок
Сообщения
26
Репутация
0
Re: [Ошибки] Ошибка в IE

Код:
Func _IENavigate(ByRef $O_OBJECT, $S_URL, $F_WAIT = 1)
	If Not IsObj($O_OBJECT) Then
		__IEERRORNOTIFY("Error", "_IENavigate", "$_IEStatus_InvalidDataType")
		Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)
	EndIf
	If Not __IEISOBJTYPE($O_OBJECT, "documentContainer") Then
		__IEERRORNOTIFY("Error", "_IENavigate", "$_IEStatus_InvalidObjectType")
		Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)
	EndIf
	$O_OBJECT.navigate($S_URL)
	If $F_WAIT Then
		_IELoadWait($O_OBJECT)
		Return SetError(@error, 0, -1)
	EndIf
	Return SetError($_IESTATUS_SUCCESS, 0, -1)
EndFunc


Код:
Func _IELoadWait(ByRef $O_OBJECT, $I_DELAY = 0, $I_TIMEOUT = -1)
	If Not IsObj($O_OBJECT) Then
		__IEERRORNOTIFY("Error", "_IELoadWait", "$_IEStatus_InvalidDataType")
		Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)
	EndIf
	If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then
		__IEERRORNOTIFY("Error", "_IELoadWait", "$_IEStatus_InvalidObjectType", ObjName($O_OBJECT))
		Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)
	EndIf
	Local $OTEMP, $F_ABORT = False, $I_ERRORSTATUSCODE = $_IESTATUS_SUCCESS
	Local $STATUS = __IEINTERNALERRORHANDLERREGISTER()
	If Not $STATUS Then __IEERRORNOTIFY("Warning", "_IELoadWait", "Cannot register internal error handler, cannot trap COM errors", "Use _IEErrorHandlerRegister() to register a user error handler")
	Local $F_NOTIFYSTATUS = _IEErrorNotify()
	_IEErrorNotify(False)
	Sleep($I_DELAY)
	Local $IELOADWAITTIMER = TimerInit()
	If $I_TIMEOUT = -1 Then $I_TIMEOUT = $__IELOADWAITTIMEOUT
	Switch ObjName($O_OBJECT)
		Case "IWebBrowser2"
			While Not (String($O_OBJECT.readyState) = "complete" Or $O_OBJECT.readyState = 4 Or $F_ABORT)
				If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then
					$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT
					$F_ABORT = True
				EndIf
				If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then
					$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()
					$F_ABORT = True
				EndIf
				Sleep(100)
			WEnd
			While Not (String($O_OBJECT.document.readyState) = "complete" Or $O_OBJECT.document.readyState = 4 Or $F_ABORT)
				If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then
					$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT
					$F_ABORT = True
				EndIf
				If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then
					$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()
					$F_ABORT = True
				EndIf
				Sleep(100)
			WEnd
		Case "DispHTMLWindow2"
			While Not (String($O_OBJECT.document.readyState) = "complete" Or $O_OBJECT.document.readyState = 4 Or $F_ABORT)
				If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then
					$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT
					$F_ABORT = True
				EndIf
				If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then
					$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()
					$F_ABORT = True
				EndIf
				Sleep(100)
			WEnd
			While Not (String($O_OBJECT.top.document.readyState) = "complete" Or $O_OBJECT.top.document.readyState = 4 Or $F_ABORT)
				If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then
					$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT
					$F_ABORT = True
				EndIf
				If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then
					$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()
					$F_ABORT = True
				EndIf
				Sleep(100)
			WEnd
		Case "DispHTMLDocument"
			$OTEMP = $O_OBJECT.parentWindow
			While Not (String($OTEMP.document.readyState) = "complete" Or $OTEMP.document.readyState = 4 Or $F_ABORT)
				If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then
					$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT
					$F_ABORT = True
				EndIf
				If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then
					$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()
					$F_ABORT = True
				EndIf
				Sleep(100)
			WEnd
			While Not (String($OTEMP.top.document.readyState) = "complete" Or $OTEMP.top.document.readyState = 4 Or $F_ABORT)
				If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then
					$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT
					$F_ABORT = True
				EndIf
				If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then
					$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()
					$F_ABORT = True
				EndIf
				Sleep(100)
			WEnd
		Case Else
			$OTEMP = $O_OBJECT.document.parentWindow
			While Not (String($OTEMP.document.readyState) = "complete" Or $OTEMP.document.readyState = 4 Or $F_ABORT)
				If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then
					$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT
					$F_ABORT = True
				EndIf
				If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then
					$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()
					$F_ABORT = True
				EndIf
				Sleep(100)
			WEnd
			While Not (String($OTEMP.top.document.readyState) = "complete" Or $O_OBJECT.top.document.readyState = 4 Or $F_ABORT)
				If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then
					$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT
					$F_ABORT = True
				EndIf
				If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then
					$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()
					$F_ABORT = True
				EndIf
				Sleep(100)
			WEnd
	EndSwitch
	_IEErrorNotify($F_NOTIFYSTATUS)
	__IEINTERNALERRORHANDLERDEREGISTER()
	Switch $I_ERRORSTATUSCODE
		Case $_IESTATUS_SUCCESS
			Return SetError($_IESTATUS_SUCCESS, 0, 1)
		Case $_IESTATUS_LOADWAITTIMEOUT
			__IEERRORNOTIFY("Warning", "_IELoadWait", "$_IEStatus_LoadWaitTimeout")
			Return SetError($_IESTATUS_LOADWAITTIMEOUT, 3, 0)
		Case $_IESTATUS_ACCESSISDENIED
			__IEERRORNOTIFY("Warning", "_IELoadWait", "$_IEStatus_AccessIsDenied", "Cannot verify readyState.  Likely casue: cross-site scripting security restriction.")
			Return SetError($_IESTATUS_ACCESSISDENIED, 0, 0)
		Case $_IESTATUS_CLIENTDISCONNECTED
			__IEERRORNOTIFY("Error", "_IELoadWait", "$_IEStatus_ClientDisconnected", "Browser has been deleted prior to operation.")
			Return SetError($_IESTATUS_CLIENTDISCONNECTED, 0, 0)
		Case Else
			__IEERRORNOTIFY("Error", "_IELoadWait", "$_IEStatus_GeneralError", "Invalid Error Status - Notify IE.au3 developer")
			Return SetError($_IESTATUS_GENERALERROR, 0, 0)
	EndSwitch
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Ошибки] Ошибка в IE

Marx
Название по прежнему не подходит.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Re: [Ошибки] Ошибка в IE

ахаха, гениально. Взять да и выложить сюда кусок из библиотеки IE :D
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Re: [Ошибки] Ошибка в IE

После деобфускации что-ли?
 
Автор
M

Marx

Новичок
Сообщения
26
Репутация
0
Re: [Ошибки] Ошибка в IE

Ну что так никто и не поможет?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Marx
Эта проверка вызвала диалог ошибки. Это говорит что переданный параметр не является объектом.
Код:
If Not IsObj($o_object) Then
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Карл Генрих, Вам же с самого начала сказали
во вторых, предоставь код.
Откуда ж нам знать что вызывает ошибку, если мы не видим кода твоего скрипта и не знаем как ты используешь IENavigate ?
 
Автор
M

Marx

Новичок
Сообщения
26
Репутация
0
C2H5OH [?]
Карл Генрих, Вам же с самого начала сказалиЦитата
во вторых, предоставь код.
Откуда ж нам знать что вызывает ошибку, если мы не видим кода твоего скрипта и не знаем как ты используешь IENavigate ?
В целях сохранения копирайта к сожалению не могу :smile: Могу сказать, что провел эксперимент когда на пк ставлю IE7 автоматически при использовании скрипта открывается 2 страницы, 1 пустая,2 грузит нужную ссылку. А при установки IE9 открывает 1 страницу и грузит её, но прогружает не полнотью, а только картинки итд :stars:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Ну тогда, Карл Генрих, вот Вам бубен :dance_man:


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

В целях сохранения чего ? ? ? :shok:
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Понятно чего, получил скрипт, декомпилировал, теперь пытается понять почему не работает, или пытается доделать.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Marx [?]
В целях сохранения копирайта к сожалению не могу
Тогда надо конструировать пример с использованием какого нибудь сайта, чтобы воспроизвести ошибку. Если не получится воспроизвести ошибку, значит делать в своём скрипте вывод ошибок в консоль, чтобы знать что происходит по времени. Но справшивать без кода, тут же телепатов нет, может быть всё что угодно, иногда с кодом не разберёшь.
 
Автор
M

Marx

Новичок
Сообщения
26
Репутация
0
inververs [?]
Понятно чего, получил скрипт, декомпилировал, теперь пытается понять почему не работает, или пытается доделать.
Из чего такие выводы? Предоставьте аргументы.
Я нашёл ответ, всем спасибо.
 
Верх