Что нового

Перелистывание окна приложения вниз на строго определенное количество пикселей

vadimkou

Новичок
Сообщения
17
Репутация
2
Доброй ночи. Передо мной стоит задача автоматизировать процесс на 4х разных ПК.
Задача следующего типа: зайди на сайт, пролистать немного вниз, нажать на заданные координаты, используя функции mousemove и mouseclick (без _IEAction).
На всех 4х ПК стоит одинаковая версия Internet Explorer (восьмая).
В чем загвоздка: при пролистовании через команды Send или Mousewheel в больших количествах на 2х ПК страничка не доматывается на 5-7 пикселей, и клик происходит не в том месте, на других 2х все нормально.
Вопрос: как проматать вниз на строго определенное количество пикселей, чтобы не сбивалась координатная сетка?
Вот код программы:

Код:
#include <IE.au3>

$iW = 1024
$iH = 768
$oIE = ObjCreate("Shell.Explorer.2")
$sUrl = 'http://medicine-2012.blogspot.com/'

$Brouser = GUICreate("Brouser", $iW-40, $iH-199, 0, 0, BitOR($WS_MINIMIZEBOX,$WS_POPUP,$WS_GROUP,$WS_CLIPSIBLINGS),$WS_EX_COMPOSITED)

GUICtrlSetState($Brouser, @SW_MAXIMIZE)

$GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, $iW-39, $iH-200)
GUISetState()
_IENavigate($oIE, "http://medicine-2012.blogspot.com/")
_IELoadWait($oIE)
_WinWaitActivate("Brouser","")
ControlFocus("","", "[CLASS:Internet Explorer_Server; INSTANCE:1]")
; в этом месте предпринимались попытки перелистывания окна вниз, через send и mousewheel, но смещение окна было разным


Func _WinWaitActivate($title,$text,$timeout=0)
	WinWait($title,$text,$timeout)
	If Not WinActive($title,$text) Then WinActivate($title,$text)
	WinWaitActive($title,$text,$timeout)
EndFunc



While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Встречный вопрос - куда по сути то нажимать надо ? Рыбок покормить что ли ?

Если да, то вот... думаю там особо не промахнешься.
ЗЫ: осталось только "MouseClick" дописать какой необходимо.
Код:
#include <IE.au3>
#include <INet.au3>
#include <Array.au3>
#include <Encoding.au3>

   $sData1 = _INetGetSource("http://medicine-2012.blogspot.com/")
   $APro = _Encoding_UTF8ToANSI(BinaryToString($sData1))
   $APro_Text = StringRegExp($APro, '(?s).*?<iframe src=["'']*//(.*?)["'']* frameborder', 3)
   
   Local $oIE = _IECreate($APro_Text[0])
   _IELoadWait($oIE)
   _IEPropertySet($oIE, "theatermode", True)
 
Верх