PDA

Показать полную графическую версию : [решено] Какие координаты нужно указать для ControlClcik в созданном GUI


HORRIBLE
04-05-2010, 23:49
Я немного изменил код который приводил кнопки убрал....

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("MouseCoordMode", 2)

HotKeySet("{ESC}","click")

Example()

Func Example()
Local $oIE, $GUIActiveX
$oIE = ObjCreate("Shell.Explorer.2")
GUICreate("Embedded Web control Test", 640, 580, 10,10, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
$GUIActiveX = GUICtrlCreateObj($oIE, 1, 1, 640, 580)
GUISetState()
$oIE.navigate("http://www.autoitscript.com")
While 1
$msg = GUIGetMsg()

Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect

WEnd

GUIDelete()
EndFunc

Func click()
MsgBox(0,"","должны нажать на ссылку Autoit v3")
MouseMove(93, 387) ; мышь переместится на картинку скачать AUTO IT....
ControlClick("AutoIt v3 GUI","","Internet Explorer_Server1","main",93, 387)
EndFunc


В AUTOIT v3 Win....Info во вкладке CoordMODE поставил галку на CLIENT, получил координаты 93, 387
для позиционирования мышки выставил Opt("MouseCoordMode", 2) мышка ставится куда надо, как такое же повторить с ControlClick ?

FlatX007
05-05-2010, 08:05
А зачем кликать то ? мож перейти по ссылке и всё ?

http://www.autoitscript.com/autoit3/index.shtml

madmasles
05-05-2010, 09:04
HORRIBLE,
Попробуйте закомментировать строки ...
Example()
...
Func Example()
...
EndFunc ;==>Example
...В начале скрипта добавить#include <IE.au3>А функцию написать такFunc click()
MsgBox(0, "", "должны нажать на ссылку Autoit v3")
_IELinkClickByText($oIE, "Autoit v3")
EndFunc ;==>click

HORRIBLE
05-05-2010, 11:42
madmasles, FlatX007, так и знал, что так ответите). Я знаю, что так можно кликнуть/перейти по ссылке, но мне нужно использовать именно CONTROLCLICK с координатами.


Может понятней будет, если перейдя по http://www.autoitscript.com будет загружен сайт написанный на флеше......ссылок нет, есть только кнопки.....тут уже _IELinkClickByText($oIE, "Autoit v3") не спасет, мышкой клацнуть можно, но комп занят тогда, можно CONTROLCLICK использовать только мне не понятно какие координаты вписывать.

kaster
05-05-2010, 12:25
HORRIBLE, у ControlClick координаты - необязательный параметр, который лишь указывает в какую именно точку контрола кликать. Если у тебя вся страница, или нужно кликать по координатам огромного контрола который на самом деле содержит другие элементы типа кнопки, то процитирую тут сообщение спеца в этом деле El Panda с дружественного форума
-Декомпилируешь флешку и узнаешь название переменной в которой храниться нужный текст.
-Открываешь IE на странице с флешкой
$oFlash = _IEGetObjByName($oIE, "flashobjname") ; где $oIE - экземпляр объекта IE, "flashobjname" - имя флеш элемента на странице
$var = $oFlash.GetVariable("itext.text") ; itext - имя переменной в которой храниться текст

madmasles
05-05-2010, 12:43
HORRIBLE,
У меня так получилось:Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) click()
BlockInput (http://www.autoitscript.com/autoit3/docs/functions/BlockInput.htm)(1)
$aClientPos = WinGetPos (http://www.autoitscript.com/autoit3/docs/functions/WinGetPos.htm)("[TITLE:Embedded Web control Test;CLASS:AutoIt v3 GUI]")
$aClientSize = WinGetClientSize (http://www.autoitscript.com/autoit3/docs/functions/WinGetClientSize.htm)("[TITLE:Embedded Web control Test;CLASS:AutoIt v3 GUI]")
MouseMove (http://www.autoitscript.com/autoit3/docs/functions/MouseMove.htm)($aClientPos[0], $aClientPos[1])
$cord = PixelSearch (http://www.autoitscript.com/autoit3/docs/functions/PixelSearch.htm)($aClientPos[0], $aClientPos[1], $aClientSize[0], $aClientSize[1], 0x6000B3)
MouseMove (http://www.autoitscript.com/autoit3/docs/functions/MouseMove.htm)($cord[0], $cord[1])
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(0, "", "Здесь сейчас кликнем", 3)
MouseClick (http://www.autoitscript.com/autoit3/docs/functions/MouseClick.htm)("left", $cord[0], $cord[1], 1, 1)
BlockInput (http://www.autoitscript.com/autoit3/docs/functions/BlockInput.htm)(0)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc) ;==>click

FlatX007
05-05-2010, 13:03
madmasles - а у меня промахивается мимо окна и ничего не нажимает
...мышкой клацнуть можно, но комп занят тогда... »

HORRIBLE
05-05-2010, 14:09
Я изменил код который вверуху приведен. (удалил кнопки не нужные) Показал куда мышка перемещается...туда должен ControlClick кликнуть. см. вверху.


madmasles, с мышкой у меня тоже все на ура прошло. Как и писал FlatX007, мимо нажимает. Нажимает куда надо попробовал. Но вопрос, то нажать с помощью ControlClick!! не занимаясь поиском нужного цвета, просто нажать по нужным координатам.
kaster, заинтересовало, но все равно вопрос остался ).

madmasles
05-05-2010, 14:25
FlatX007,
HORRIBLE,
Уточните у себя цвет ссылки при помощи Au3Info. У меня на разных мониторах разное значение цвета, когда меняю, то у меня работает.

HORRIBLE
05-05-2010, 23:27
Черт, все нашел....в Au3Info, оказывается координаты указаны для ControlClick.




© OSzone.net 2001-2012