Что нового

Скрипт падает при нажатии на кнопки

Tuxzer92

Новичок
Сообщения
65
Репутация
0
Я уже победил вывод JS в _IECreateEmbedded, но появилась другая ошибка. А именно, при нажатии на кнопки вперед или назад после запуска скрипта, скрипт закрывается и в консоли появляются сообщения:

"C:\Program Files (x86)\AutoIt3\Include\IE.au3" (1984) : ==> The requested action with this object has failed.:
$oObject.GoBack()
$oObject^ ERROR

при нажатии на кнопку вперед, так же.
Я понимаю, что страницы еще не открыты и переходить некуда, но этот скрипт я планирую запускать в информационном киоске, а там кто угодно может на кнопки нажимать и если скрипт вылетит, то не хорошо получится.
Может можно как-то сделать так, чтобы вместо ошибок скрипт ничего не делал. И главное не падал!
Спасибо.
Вот код:

Код:
; *******************************************************
; Пример 1 - Перехват COM ошибок, таких как 'Назад' и 'Вперёд', находящиеся за пределами границ истории не приводят к отказу скрипта (ожидаемые COM-ошибки будут направлены в консоль)
; *******************************************************
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <Process.au3>
#include <GuiMenu.au3>
#include <WinAPI.au3>
#include <WinAPIConstants.au3>


Local $regValue = "0x2AF8"

 RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", _ProcessGetName(@AutoItPID), "REG_DWORD", $regValue)
 RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", _ProcessGetName(@AutoItPID), "REG_DWORD", $regValue)

;_IEErrorHandlerRegister()

Local $iBtn_Back, $iBtn_Forward, $iBtn_Home, $iBtn_Stop, $iBtn_Refresh, $iButtonTime
Local $oIE = _IECreateEmbedded()
GUICreate("Тест вставленного Web-элемента", 1050, 1680, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN, $WS_MAXIMIZE), $WS_EX_COMPOSITED)
GUICtrlCreateObj($oIE, 0, 54, 1050, 1280)
GUICtrlSetResizing(-1, 2 + 4 + 32 + 64)
Opt("GUIResizeMode", 2 + 64 + 256 + 512) ; Для кнопок

Local $hMenu, $hWnd = WinWait('Тест вставленного Web-элемента') ; Some window
; ---
_MakePopup($hWnd)

; Спрятать меню окна
$hMenu = _GUICtrlMenu_GetMenu($hWnd)
If $hMenu Then _
    _GUICtrlMenu_SetMenu($hWnd, 0)

; Восстановить
;_GUICtrlMenu_SetMenu($hWnd, $hMenu)

Func _MakePopup($hWnd)
    Local $iOldStyle
    ; ---
    $iOldStyle = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)
    If BitAnd($iOldStyle, $WS_CHILD) Then  _
        Return SetError(1, 0, False)

    $iOldStyle = BitAnd($iOldStyle, BitNot($WS_CAPTION))
    _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, BitOr($iOldStyle, $WS_POPUP))
    _WinAPI_SetWindowPos($hWnd, 0, 0, 0, 0, 0, BitOr($SWP_NOMOVE, $SWP_NOSIZE, $SWP_NOZORDER, $SWP_FRAMECHANGED))
    ; ---
    Return True
EndFunc

$iBtn_Back = GUICtrlCreateButton("Назад", 0, 0, 58, 53)
$iBtn_Forward = GUICtrlCreateButton("Вперёд", 58, 0, 58, 53)
$iBtn_Home = GUICtrlCreateButton("Домой", 992, 0, 58, 53)
;$iBtn_Stop = GUICtrlCreateButton("Стоп", 220, 0, 58, 53)
;$iBtn_Refresh = GUICtrlCreateButton("Обновить", 290, 0, 58, 53)
$iButtonTime = GUICtrlCreateButton("Часы", 934, 0, 58, 53)

GUISetState() ; показывает созданное окно

 _IENavigate ($oIE, "ya.ru",0)

; цикл выполняется, пока пользователь не закроет окно
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $iBtn_Home
            ; _IENavigate ($oIE, "about:blank")
            _IENavigate($oIE, "2ip.ru",0)
        Case $iBtn_Back
            _IEAction($oIE, "back")
        Case $iBtn_Forward
            _IEAction($oIE, "forward")
	    Case $iButtonTime
			_IENavigate($oIE, "http://timeserver.ru",0)
    EndSwitch
WEnd

GUIDelete()
Exit
 
Верх