Что нового

Переход по ссылкам после нажатия кнопки

maxim_porsche

Новичок
Сообщения
25
Репутация
0
Версия AutoIt: 3.3.12.0
Описание: Собственно,имеется код
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

; Простой пример: Встраивание объекта Internet Explorer внутри AutoIt GUI
;
; Смотрите также: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
; и функцию _IECreateEmbedded

Local $oIE, $GUIActiveX, $iBtn_Back, $iBtn_Forward, $iBtn_Refresh

$oIE = ObjCreate("Shell.Explorer.2")

; Создаёт простое GUI-окно для вывода
GUICreate("Test Browser", 640, 480, -1, -1, _
        BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), $WS_EX_COMPOSITED)
$GUIActiveX = GUICtrlCreateObj($oIE, 5, 5, 630, 405)
GUICtrlSetResizing(-1, 2 + 4 + 32 + 64)
Opt("GUIResizeMode", 2 + 64 + 256 + 512) ; Для кнопок
$iBtn_Back = GUICtrlCreateButton("Назад", 10, 420, 60, 30)
$iBtn_Forward = GUICtrlCreateButton("Вперёд", 80, 420, 60, 30)
$iBtn_Refresh = GUICtrlCreateButton("Обновить", 290, 420, 60, 30)

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

$oIE.navigate("http://www.autoitscript.com")

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $iBtn_Back
            $oIE.GoBack
        Case $iBtn_Forward
            $oIE.GoForward
        Case $iBtn_Refresh
            $oIE.document.execCommand("Refresh")
    EndSwitch
WEnd

GUIDelete()


Примечания:
Необходимо реализовать переход на следующую/предыдущую ссылку из некого списка ссылок после нажатия кнопки "Вперед"/"Назад". Сам список ссылок должен храниться в коде скрипта.

Как пример,список ссылок:
ya.ru
vk.com
u.to

Благодарю за любую помощь :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322

alex33

Скриптер
Сообщения
1,457
Репутация
186
Занеси эти ссылки в массив и потом по ним переходи
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $iCount = 0
Global $aLinks[3] = ["ya.ru", "vk.com", "u.to"]
; Простой пример: Встраивание объекта Internet Explorer внутри AutoIt GUI
;
; Смотрите также: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
; и функцию _IECreateEmbedded

Local $oIE, $GUIActiveX, $iBtn_Back, $iBtn_Forward, $iBtn_Refresh

$oIE = ObjCreate("Shell.Explorer.2")

; Создаёт простое GUI-окно для вывода
GUICreate("Test Browser", 640, 480, -1, -1, _
        BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), $WS_EX_COMPOSITED)
$GUIActiveX = GUICtrlCreateObj($oIE, 5, 5, 630, 405)
GUICtrlSetResizing(-1, 2 + 4 + 32 + 64)
Opt("GUIResizeMode", 2 + 64 + 256 + 512) ; Для кнопок
$iBtn_Back = GUICtrlCreateButton("Назад", 10, 420, 60, 30)
$iBtn_Forward = GUICtrlCreateButton("Вперёд", 80, 420, 60, 30)
$iBtn_Refresh = GUICtrlCreateButton("Обновить", 290, 420, 60, 30)

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

$oIE.navigate($aLinks[$iCount])

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $iBtn_Back
			$iCount -= 1
			If $iCount < 0 Then $iCount = UBound($aLinks) - 1
			If $iCount > (UBound($aLinks) - 1) Then $iCount = 0
			$oIE.navigate($aLinks[$iCount])
        Case $iBtn_Forward
			$iCount += 1
			If $iCount < 0 Then $iCount = UBound($aLinks) - 1
			If $iCount > (UBound($aLinks) - 1) Then $iCount = 0
			$oIE.navigate($aLinks[$iCount])
        Case $iBtn_Refresh
            $oIE.document.execCommand("Refresh")
    EndSwitch
WEnd

GUIDelete()
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
maxim_porsche [?]
Тему можно закрывать
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Автор
M

maxim_porsche

Новичок
Сообщения
25
Репутация
0
Эх,возникла проблема :(
После нажатия на кнопку "Вперед"/"Назад" не "прокатывается" страница колесиком мыши и приходиться тыкать в любой текст сайта,чтобы скролл заработал( Это можно как-нибудь решить?
И да,мерцание страницы можно устранить?(
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
maxim_porsche [?]
Это можно как-нибудь решить?
Да. Это можно сделать передав фокус документу
Код:
$oIE.navigate($aLinks[$iCount])
GUICtrlSetState($GUIActiveX, 256);focus

Скрипт будет таким:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $iCount = 0
Global $aLinks[3] = ["ya.ru", "vk.com", "u.to"]
; Простой пример: Встраивание объекта Internet Explorer внутри AutoIt GUI
;
; Смотрите также: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
; и функцию _IECreateEmbedded

Local $oIE, $GUIActiveX, $iBtn_Back, $iBtn_Forward, $iBtn_Refresh

$oIE = ObjCreate("Shell.Explorer.2")

; Создаёт простое GUI-окно для вывода
GUICreate("Test Browser", 640, 480, -1, -1, _
        BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), $WS_EX_COMPOSITED)
$GUIActiveX = GUICtrlCreateObj($oIE, 5, 5, 630, 405)
GUICtrlSetResizing(-1, 2 + 4 + 32 + 64)
Opt("GUIResizeMode", 2 + 64 + 256 + 512) ; Для кнопок
$iBtn_Back = GUICtrlCreateButton("Назад", 10, 420, 60, 30)
$iBtn_Forward = GUICtrlCreateButton("Вперёд", 80, 420, 60, 30)
$iBtn_Refresh = GUICtrlCreateButton("Обновить", 290, 420, 60, 30)

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

$oIE.navigate($aLinks[$iCount])
GUICtrlSetState($GUIActiveX, 256);focus
$oIE.document.body.focus()

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $iBtn_Back
			$iCount -= 1
			If $iCount < 0 Then $iCount = UBound($aLinks) - 1
			If $iCount > (UBound($aLinks) - 1) Then $iCount = 0
			$oIE.navigate($aLinks[$iCount])
			GUICtrlSetState($GUIActiveX, 256);focus
			$oIE.document.body.focus()
        Case $iBtn_Forward
			$iCount += 1
			If $iCount < 0 Then $iCount = UBound($aLinks) - 1
			If $iCount > (UBound($aLinks) - 1) Then $iCount = 0
			$oIE.navigate($aLinks[$iCount])
			GUICtrlSetState($GUIActiveX, 256);focus
			$oIE.document.body.focus()
        Case $iBtn_Refresh
            $oIE.document.execCommand("Refresh")
			GUICtrlSetState($GUIActiveX, 256);focus
			$oIE.document.body.focus()
    EndSwitch
WEnd

GUIDelete()
 
Автор
M

maxim_porsche

Новичок
Сообщения
25
Репутация
0
Огромное спасибо,теперь всё работает :smile:
А мерцание можно как-нибудь убрать?( А то раздражает(
 
Верх