2
« on: May 04, 2019, 07:10:20 PM »
Код:
GETSCREEN
WAITMS(28)
IF_PICTURE_IN (272,623, 373,660, "search.bmp", -1, 100)
MOVE(390,641)
LCLICK(345,640)
WAITMS(13)
MOVE(427,634)
WAITMS(12)
END_IF
SUB(recognize, $x1,$y1, $x2,$y2, $c_ignor, $prc)
GETFILELIST($Letters_arr, "Letters\*.bmp")
FOR($Let_num=0,$Let_num<ARRSIZE($Letters_arr))
SCANPICTURE($ARR_SCAN, $x1,$y1, $x2,$y2, STRCONCAT("Letters\", $Letters_arr[$Let_num]), $c_ignor, $prc)
FOR($arr_num=0,$arr_num<ARRSIZE($ARR_SCAN),2)
ARRPUSH($ARR_OUT, $ARR_SCAN[$arr_num])
ARRPUSH($ARR_OUT, STRCUT($Letters_arr[$Let_num], 1, 1))
END_CYC
UNDEFINE($ARR_SCAN)
END_CYC
$siz = ARRSIZE($ARR_OUT)
$srtcheck = 0
$srt = 0
FOR($a=$siz-2,($a>0)&($srt=0),-2)
FOR($b=0,$b<$a,2)
IF($ARR_OUT[$b] > $ARR_OUT[$b+2])
$srtcheck = 1
$tmp = $ARR_OUT[$b]
$tmp2 = $ARR_OUT[$b+1]
$ARR_OUT[$b] = $ARR_OUT[$b+2]
$ARR_OUT[$b+1] = $ARR_OUT[$b+3]
$ARR_OUT[$b+2] = $tmp
$ARR_OUT[$b+3] = $tmp2
END_IF
END_CYC
IF($srtcheck = 0)
$srt = 1
END_IF
END_CYC
$str = ""
FOR($a=0,$a<ARRSIZE($ARR_OUT),2)
IF(STRLEN($str) > 0)
IF($ARR_OUT[$a]-$ARR_OUT[$a-2] > 10) // обпределение пробела
$str = STRCONCAT($str, " ")
END_IF
$str = STRCONCAT($str, $ARR_OUT[$a+1])
ELSE
$str = $ARR_OUT[$a+1]
END_IF
END_CYC
UNDEFINE($ARR_OUT)
END_SUB
GETSCREEN
recognize(621,340, 667,360, -1, 50) // область распознавания, цвет прозрачности, процент совпадения
LOGWRITE ($str) // в переменную $str выводятся распознанные символы
IF $str < 2.8
MOVE(617,331)
WAITMS(59)
MOVE(624,329)
WAITMS(48)
LCLICK(625,328)
WAITMS(551)
MOVE(583,404)
WAITMS(64)
MOVE(626,404)
WAITMS(72)
LCLICK(626,404)
WAITMS(421)
END_IF
WAITMS(75)
IF($time < $_time_t)
$time = $_time_t + 60
KEYPRESS(#U)
WAITMS(150)
KEYPRESS(#U)
WAITMS(150)
END_IF
1. Скрипт делает снимок экрана, ищет кнопку и нажимает её.
2. Определение числа в области.
3. Если число меньше N, то всякие махинации мышью.
4. Каждые 60 секунд окно открывается-закрывается.
В таком виде код выбивает ошибку "количество открывающих операторов не совпадает с количеством закрывающих". Буду признателен за помощь в исправлении.