Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: chan78 on April 04, 2017, 09:21:10 PM
-
Доброго времени суток! Есть задача набирать заранее заданные координаты на экранной клавиатуре. Цифры могут быть одно-, двух-, трех- и четырехразрядные, отрицательные и положительные. Способ, которым реализовал, громоздкий и не удобный в плане ввода координат. Хотелось бы просто вбивать координаты как переменные $x=-1257, $y=542. Прошу помочь в оптимизации задачи, заранее спасибо!
[spoiler]
// x-950
// y-505
// координата х
$x1=9
$x2=5
$x3=0
$x4=8
// координата у
$y1=5
$y2=0
$y3=5
$y4=0
// минусы: 1-минус есть, 0 - минуса нет
$minusx=1
$minusy=1
// значимый разряд в координатах
$m1=4
$m2=4
GETSCREEN
IF($minusx=1)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "минус.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
END_IF
FOR($i=1,$i<$m1)
IF($i=1)
$n =$x1
END_IF
IF($i=2)
$n =$x2
END_IF
IF($i=3)
$n =$x3
END_IF
IF($i=4)
$n = $x4
END_IF
SWITCH($n)
CASE(0)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "0.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(1)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(2)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(3)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(4)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "4.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(5)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "5.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "6.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "7.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "8.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(9)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "9.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
END_SWITCH
END_CYC
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "координата у.bmp", -1, 95)
LCLICK($_return1+50, $_return2+3)
WAITMS(500)
END_IF
IF($minusy=1)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "минус.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
END_IF
FOR($i=1,$i<$m2)
IF($i=1)
$n =$y1
END_IF
IF($i=2)
$n =$y2
END_IF
IF($i=3)
$n =$y3
END_IF
IF($i=4)
$n = $y4
END_IF
SWITCH($n)
CASE(0)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "0.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(1)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(2)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(3)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(4)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "4.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(5)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "5.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "6.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "7.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "8.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
CASE(9)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "9.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
END_SWITCH
END_CYC
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ок.bmp", -1, 95)
LCLICK($_return1+9, $_return2+9)
WAITMS(500)
END_IF
[/spoiler]
-
Проблема не в том, зачем, а в том как обработать заданные координаты.
-
Спасибо за помощь.
-
А клавиатурой эти цифры не набираются что ли? Только кликами?
-
Держи готовый. Ничего прописывать не нужно кроме вводимых координат.
Клавиатура может быть в любом месте.
Скрипт+картинка
$x= -9508
$y= -5050
SUB(cl, $parX, $parY)
LCLICK(($fx + $step * $parX), ($fy + $step * $parY))
WAITMS(300)
END_SUB
SUB(нажатие, $num)
WAITMS(500)
LOGWRITE($num)
IF($num < 0)
cl(0, 3) // минус
END_IF
$num = ABS($num)
FOR($i=1, $i < STRLEN($num)+1)
$n = STRCUT($num, $i, 1)
LOGWRITE($n)
IF($n = 0)
cl(1, 3) // ноль
ELSE
$dy = INT(($n-1) / 3)
$dx = $n - ($dy*3) - 1
cl($dx, $dy) // 1...9
END_IF
END_CYC
cl(2, 3) // Ok
END_SUB
SUB(init)
GETSCREEN
IF_PICTURE_IN(0,0, $_xmax,$_ymax, "base.bmp", -1, 97)
$_r1 = $_return1
$_r2 = $_return2
ELSE
LOGWRITE("Клавиатура не найдена")
HALT
END_IF
END_SUB
//==============================================================================
WAITMS(300)
init()
$step = 72
$fx = $_r1 + 20
$fy = $_r2 + 102
LOGWRITE("вводит х")
LCLICK($_r1+5, $_r2+5)
нажатие($x)
LOGWRITE("вводит y")
LCLICK($_r1+5, $_r2+45)
нажатие($y)
HALT
-
Ой, закидали вариантами!!! Спасибо огромное, ребята, за ваш труд и помошь!!! Буду разбираться. Моему мозгу фрезеровщика с 20-ти летним стажем, с трудом дается правильная программерская мысль :) Поэтому и логика кривая :)
-
Я пока свою версию ваял kiril уже выкатил 2 вариант. Не стал уже удалять, жалко. Нужно было страницу обновить.
Моему мозгу фрезеровщика с 20-ти летним стажем, с трудом дается правильная программерская мысль :) Поэтому и логика кривая :)
Нужно было работать наладчиком станков с ЧПУ :) У меня 2 друга закончили с такой специальностью, вот только они гораздо дальше от программирования, чем ты. Вот такая судьба.