Я уже победил вывод JS в _IECreateEmbedded, но появилась другая ошибка. А именно, при нажатии на кнопки вперед или назад после запуска скрипта, скрипт закрывается и в консоли появляются сообщения:
при нажатии на кнопку вперед, так же.
Я понимаю, что страницы еще не открыты и переходить некуда, но этот скрипт я планирую запускать в информационном киоске, а там кто угодно может на кнопки нажимать и если скрипт вылетит, то не хорошо получится.
Может можно как-то сделать так, чтобы вместо ошибок скрипт ничего не делал. И главное не падал!
Спасибо.
Вот код:
"C:\Program Files (x86)\AutoIt3\Include\IE.au3" (1984) : ==> The requested action with this object has failed.:
$oObject.GoBack()
$oObject^ ERROR
$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