Что нового

клик по координатам в ObjCreate("Shell.Explorer.2")

kalpak44

Новичок
Сообщения
45
Репутация
1
Привет люди добрые, буду крайне рад если кто нить поможет исправить скриптик, а суть такова: нужно сделать клик в ObjCreate("Shell.Explorer.2") по координатам, примерно как в скрипте внизу. проблема заключается в том что, если хочу указать координаты клика выходящие за рамки gui, то клик производится не в Shell.Explorer.2.

Код:
#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("yandex.ru")
    While 1
        $msg = GUIGetMsg()

        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
        EndSelect

    WEnd

    GUIDelete()
EndFunc 

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]")

    MouseClick("left", 550, 20, 1, 1)
    BlockInput(0)
EndFunc   ;==>click
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Может так?
Код:
_IEAction($oElement,'click')
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
Код:
_IEAction($oElement,'click')

это функция конешно отличная, но хотелось все же клик по координатам :(
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
kalpak44
а можно пример где такое необходимо?
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
недавно наткнулся на такое замечательное расширение в firefox - imacros, расширение для автоматизации браузера, в том числе там была фича - клик по координатам на сайте, так вот хотел сделать что то подобное, только с более богатыми возможностями :smile:
 

Fever

Скриптер
Сообщения
308
Репутация
112
kalpak44
попробуйте так:
Код:
Func click($x, $y)
    $aClientPos = ControlGetPos("[TITLE:Embedded Web control Test;CLASS:AutoIt v3 GUI]", "", "[CLASS:Internet Explorer_Server; INSTANCE:1]"

    MouseClick("left", $aClientPos[0] + $x, $aClientPos[1] + $y , 1, 1)
    BlockInput(0)
EndFunc   ;==>click


но проблема в том, что если нужная координата находится на странице, но вне зоны видимости, то прокрутки в браузере не произойдет.
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
а у мя кажесь точно так :whistle: :whistle: :whistle: поэтому и сюда обратился :ok:
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
kalpak44
Что если вычислить координаты граней объекта перед тем как кликать на нём? И сравнить координату, входит ли она в указанный диапазон по горизонтали, потом по вертикали. Если не входит то не кликать.
 

darkwhite

Знающий
Сообщения
129
Репутация
5
Извините, конечно, но помоему функция
Код:
MouseClick("left", $aClientPos[0] + $x, $aClientPos[1] + $y , 1, 1)

кликает именно мышкой именно на экране а не в приложении
может нужно использовать
Код:
ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y]]]] )
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
AZJIO
пасиб, но от этого не много будит толку , к сожалению ....
а по поводу
Код:
ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y]]]] )

ни как не получилось кликнуть по координатам
 

darkwhite

Знающий
Сообщения
129
Репутация
5
ну как же не работает то ?
когда все прекрасно работает

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("MouseCoordMode", 2)

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

Func Example()
    Local $oIE, $GUIActiveX
    $oIE = ObjCreate("Shell.Explorer.2")
    $form=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("yandex.ru")
    While 1
        $msg = GUIGetMsg()

        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
        EndSelect

    WEnd

    GUIDelete()
EndFunc

Func click()
    ControlClick("Embedded Web control Test","",'Internet Explorer_Server1',"left",1, 550, 20)
EndFunc   ;==>click
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
странно, а у мя на двух машинах не реагирует вооше :blink:
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
у мя нет! :'( испытал на 4 машинах ..... :blink: :blink: единственное на всх винка 7 алтимет x64. хотя и на хрюшке тоже самое :-\ :-\
 

darkwhite

Знающий
Сообщения
129
Репутация
5
Код:
ControlClick("Embedded Web control Test","",'Internet Explorer_Server1',"left",1, 550, 20)

у тбея может быть не Internet Explorer_Server1 а Internet Explorer_Server2 или 3
посмотри autoit info
 
Верх