Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Какие координаты нужно указать для ControlClcik в созданном GUI (http://forum.oszone.net/showthread.php?t=174873)

HORRIBLE 04-05-2010 23:49 1406805

Какие координаты нужно указать для ControlClcik в созданном GUI
 
Я немного изменил код который приводил кнопки убрал....
Код:

#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 1406914

А зачем кликать то ? мож перейти по ссылке и всё ?

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

madmasles 05-05-2010 09:04 1406943

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 1407065

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


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

kaster 05-05-2010 12:25 1407097

HORRIBLE, у ControlClick координаты - необязательный параметр, который лишь указывает в какую именно точку контрола кликать. Если у тебя вся страница, или нужно кликать по координатам огромного контрола который на самом деле содержит другие элементы типа кнопки, то процитирую тут сообщение спеца в этом деле El Panda с дружественного форума
Цитата:

-Декомпилируешь флешку и узнаешь название переменной в которой храниться нужный текст.
-Открываешь IE на странице с флешкой
Код:

$oFlash = _IEGetObjByName($oIE, "flashobjname") ; где $oIE - экземпляр объекта IE, "flashobjname" - имя флеш элемента на странице
$var = $oFlash.GetVariable("itext.text") ; itext - имя переменной в которой храниться текст



madmasles 05-05-2010 12:43 1407109

HORRIBLE,
У меня так получилось:
Код:

Func click()
    BlockInput(1)
    $aClientPos = WinGetPos("[TITLE:Embedded Web control Test;CLASS:AutoIt v3 GUI]")
    $aClientSize = WinGetClientSize("[TITLE:Embedded Web control Test;CLASS:AutoIt v3 GUI]")
    MouseMove($aClientPos[0], $aClientPos[1])
    $cord = PixelSearch($aClientPos[0], $aClientPos[1], $aClientSize[0], $aClientSize[1], 0x6000B3)
    MouseMove($cord[0], $cord[1])
    MsgBox(0, "", "Здесь сейчас кликнем", 3)
    MouseClick("left", $cord[0], $cord[1], 1, 1)
    BlockInput(0)
EndFunc  ;==>click


FlatX007 05-05-2010 13:03 1407121

madmasles - а у меня промахивается мимо окна и ничего не нажимает
Цитата:

Цитата HORRIBLE
...мышкой клацнуть можно, но комп занят тогда... »


HORRIBLE 05-05-2010 14:09 1407180

Я изменил код который вверуху приведен. (удалил кнопки не нужные) Показал куда мышка перемещается...туда должен ControlClick кликнуть. см. вверху.


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

madmasles 05-05-2010 14:25 1407198

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

HORRIBLE 05-05-2010 23:27 1407588

Черт, все нашел....в Au3Info, оказывается координаты указаны для ControlClick.


Время: 16:40.

Время: 16:40.
© OSzone.net 2001-