Что нового

[Окна, Диалоги] Нажатие на кнопку "Да" [Ошибка сценария]

Scarabay

Новичок
Сообщения
10
Репутация
0
Версия AutoIt: v3.3.8.1

Описание: Есть программа, которая использует IE. Постоянно выскакивают такие ошибки:
TTERz.png

И их не возможно отключить :(
Можете написать скрипт, который бы постоянно нажимал на кнопку "Да"?

Примечания: Раньше и сам все сделал бы, но давно AutoIt не запускал.
Заранее благодарен!
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Scarabay
может стоит обновить IE?
или читать справку по
Код:
ControlSend
 
Автор
S

Scarabay

Новичок
Сообщения
10
Репутация
0
Re: [Окна, Диалоги] Нажатие на кнопку \"Да\" [Ошибка сценария]

joiner, был IE10, обновил до IE11 - не обновилось. После никакие программы вообще не запускались.. не восстановить, ничего нельзя было сделать. :(
Кстати, после того как переустановил Windows с IE11 - проблема не ушла :(

А как сделать, что бы программка постоянно сидела в трее, а не сразу, после первого раза - закрывалась?


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

+ я так и не понял, как не в активном окне нажимать "ДА" или отсылать ALT+Y.

Код:
$hWnd = WinWait("[TITLE:Ошибка сценария; CLASS:Internet Explorer_TridentDlgFrame]", "")
ControlSend($hWnd, "", "", "!Д")


Вот так, не получается.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
можно использовать
Код:
ControlClick

похоже, происходит эмуляция клика мыши
для постоянной работы скрипта используй циклы
пример
Код:
While 1
; ожидание появления окна , при появлении окна клик по кнопке, ожидание закрытия окна.
; цикл продолжается далее
WEnd

AutoIT, надеюсь, последняя стабильная версия?
но лучше всего, ищи решение проблемы с IE
искать что то типа
http://support.microsoft.com/kb/308260/ru
http://support.microsoft.com/kb/822521/ru
 
Автор
S

Scarabay

Новичок
Сообщения
10
Репутация
0
Код:
While 1
   $hWnd = WinWait("[TITLE:Ошибка сценария; CLASS:Internet Explorer_TridentDlgFrame]", "")
   If $hWnd Then
	   WinClose($hWnd)
	EndIf
WEnd

Оказывается, закрытие окна, равносильно нажатию на кнопку "Да" :smile: Сделал так, вроде работает :smile:
Спасибо за помощь!

P.S. А проблему с IE решить не удастся. Это старая версия программы, которая бесплатная. Она сама настраивает IE_frame.dll или чет подобное, с указанными параметрами. Да только там нет галочки "Ошибки сценария". В новой версии это исправлено, да только стоит денег.
P.S.S. В обычном IE у меня подобного не выскакивает.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Scarabay,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


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



Можно примерно так сделать.
Код:
__ScriptDebuggerIE()
OnAutoItExitRegister('_OnExitFunc')
MsgBox(0, '', '')
;...
;~ Ваш код
;...


Func _OnExitFunc()
	__ScriptDebuggerIE(1)
EndFunc   ;==>_OnExitFunc

Func __ScriptDebuggerIE($f_Return = 0)
	Local Static $a__ScriptDebugger[4][3] = [[3, 'HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main'],['Disable Script Debugger', 'yes'], _
			['DisableScriptDebuggerIE', 'yes'],['Error Dlg Displayed On Every Error', 'no']]

	If $f_Return Then
		For $i = 1 To $a__ScriptDebugger[0][0]
			If StringRegExp($a__ScriptDebugger[$i][2], '(?i)^(yes|no)$') And $a__ScriptDebugger[$i][2] <> $a__ScriptDebugger[$i][1] Then
				RegWrite($a__ScriptDebugger[0][1], $a__ScriptDebugger[$i][0], 'REG_SZ', $a__ScriptDebugger[$i][2])
			EndIf
		Next
	Else
		For $i = 1 To $a__ScriptDebugger[0][0]
			$a__ScriptDebugger[$i][2] = RegRead($a__ScriptDebugger[0][1], $a__ScriptDebugger[$i][0])
			If @error Then ContinueLoop
			$a__ScriptDebugger[$i][2] = StringLower($a__ScriptDebugger[$i][2])
			If $a__ScriptDebugger[$i][2] <> $a__ScriptDebugger[$i][1] Then
				RegWrite($a__ScriptDebugger[0][1], $a__ScriptDebugger[$i][0], 'REG_SZ', $a__ScriptDebugger[$i][1])
			EndIf
		Next
	EndIf
EndFunc   ;==>__ScriptDebuggerIE
 
Автор
S

Scarabay

Новичок
Сообщения
10
Репутация
0
madmasles, ничего не понял в вашем коде, но теперь ни одного сообщения с ошибкой! Огромное спасибо! :laugh:
 
Верх