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

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

Antoschka2 05-04-2010 16:38 1385492

PixelSearch - нажатие в найденной точке
 
Всем добрыи день. я как-то немного запутолся в своём скрипте. хотя я неочень понимаю в pixelsearch.
Суть скрипта такова. в задонном прямоугольнике должен скрипт наити точку задонного цвета. после всего переити мышкои на эту точку и нажать левои кнопкои. я незнаю, возможно я неправильно понял перевод ,left,top,right,bottom как зафиксировать прямоугольник.

Вот что получилось:


WinWaitActive("www.---.de - Windows Internet Explorer")
sleep(3000)

$Pos = PixelSearch( 329, 340, 380, 423, 0x689CFE,)
if IsArray($Pos) Then
MouseMove($Pos[0],$Pos[1],0)

MouseClick("left")
EndIf



Заранее благодарю

kaster 05-04-2010 16:50 1385499

Antoschka2, и что происходит в процессе выполнения скрипта?
я немного укоротил скрипт до такого
Код:

WinWaitActive("www.---.de - Windows Internet Explorer")
sleep(3000)

$Pos = PixelSearch(329, 340, 380, 423, 0x689CFE)
if IsArray($Pos) Then MouseClick("left", $Pos[0], $Pos[1])


Antoschka2 05-04-2010 16:53 1385503

Скрипт без ошибок начинает работать но ничего так сказать не делает и потом просто выключаетса. сеичас попробую твою версию

совершенно ничего не происходит. у меня кстате виндовс 7 может из за этого? Либо я и в правду не понял как определят координаты для pixelsearch

Creat0R 05-04-2010 19:14 1385574

Antoschka2,
Предупреждение за нарушение правил форума, пункт 2.7:

Цитата:

В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема).
Переименуйте пожалуйста тему.

HORRIBLE 05-04-2010 19:32 1385592

Цитата:

Цитата Antoschka2
Скрипт без ошибок начинает работать но ничего так сказать не делает и потом просто выключаетса. сеичас попробую твою версию
совершенно ничего не происходит »

Таки да, он у вас 1 раз поищет заданный цвет, в указанной области и все. Найдет если, то кликнет, если нет закончит работу.
А вам не подойдут функции работы с IE ?

Antoschka2 06-04-2010 00:20 1385781

Вот именно при тесте ненаходит этот цвет хотя он там есть. я и другои цвет подставлял, всёравно нехочет. может кто подскажет как правильно работает этот прямоугольник. может я туда нетакие координаты вставил

HORRIBLE 06-04-2010 12:43 1386005

Цитата:

Цитата Antoschka2
может я туда нетакие координаты вставил »

Код:

#include <GUIConstants.au3>
#include <WindowsConstants.au3>

WinWaitActive("www.---.de - Windows Internet Explorer")
sleep(3000)

_Area(329, 340, 380, 423)

MsgBox(0,"","Чтобы увидеть искомую область")
sleep(1000)
$Pos = PixelSearch(329, 340, 380, 423, 0x689CFE)
if IsArray($Pos) Then MouseClick("left", $Pos[0], $Pos[1])

Func _Area($iLeft, $iTop, $iRght, $iBottom, $iTrans=100)
    Local $hWin = GUICreate('Win', $iTop, $iBottom, $iLeft, $iBottom, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT))

    WinSetTrans($hWin, '',      $iTrans)
    GUISetBkColor(0x0000e,    $hWin)
    GUISetState(@SW_SHOW,      $hWin)
EndFunc

Тут вам обрисуется область в которой вы ищите нужный пиксель.

Antoschka2 06-04-2010 23:16 1386633

огромное спасибо! я нете координаты задал!!!!

Creat0R 06-04-2010 23:45 1386653

Antoschka2, В названии темы не нужно писать «Треубуется помощь», и тем более «AutoIt», оно и так понятно :)

asdf8 07-04-2010 00:00 1386662

Цитата:

Цитата HORRIBLE
Тут вам обрисуется область в которой вы ищите нужный пиксель. »

Меня терзают смутные сомнения.
мне кажется функция _Area, чтоб правильно показывать нужную область, в данном случае должна выглядеть так:

Код:

Func _Area($iLeft, $iTop, $iRght, $iBottom, $iTrans=100)
        Local $tmp
        If $iRght<$iLeft Then
                $tmp = $iRght
                $iRght = $iLeft
                $iLeft = $tmp
        EndIf
        If $iTop>$iBottom Then
                $tmp = $iTop
                $iTop = $iBottom
                $iBottom = $tmp
        EndIf
        Local $hWin = GUICreate('Win', $iRght-$iLeft, $iBottom-$iTop, $iLeft, $iTop, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT))
        WinSetTrans($hWin, '',      $iTrans)
    GUISetBkColor(0x0000e,    $hWin)
    GUISetState(@SW_SHOW,      $hWin)
EndFunc

Поправьте, если не прав.

HORRIBLE 07-04-2010 11:44 1386917

asdf8, эээ ну да вы правы!
Я в своем примере все, что можно, перепутал......мрак.


Время: 17:21.

Время: 17:21.
© OSzone.net 2001-