Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Annihilant on August 09, 2016, 01:26:31 PM
-
Всем привет!
Следующая проблема, скрипт находит иконку и щелкает на ней правой кнопкой, открывается контекстное меню, он снова смотрит на экран, что бы найти пункт в меню, но меню это не видит хотя оно открылось. Возникает это при выборе простой или классической темы в Windows 7, а при теме AERO, все нормально, но комп и без того нагружен и мне хочется ее отключить. простой принтскрин все видит, что то я не понимаю в чем фишка.
wait (3)
log ("ищем иконку")
getscreen ()
scanpicture ($koor,50,980,1023,1023,"1.bmp",-1,80)
if (arrsize($koor) > 0)
wait (1)
log ("нашли")
$y=arrpop($koor)
$x=arrpop($koor)
log (STRCONCAT ("x=", $x," y=", $y))
log ("открываем контекстное меню")
wait (1)
rclick ($x+15,$y+15) //открываем контекстное меню
else
log ("не нашли")
goto (begin)
end_if
wait (4)
log ("ищем пункт в меню")
getscreen ()
wait (2)
screenshot ("глядим")
scanpicture ($koor,2,700,250,800,"2.bmp",-1,75)
if (arrsize($koor) > 0)
wait (1)
log ("нашли")
waitms (200)
$y=arrpop($koor)
$x=arrpop($koor)
log (STRCONCAT ("x=", $x," y=", $y))
waitms (200)
log ("выбираем пункт меню")
waitms (500)
move ($x+20,$y+5)
wait (2)
lclick ($x+20,$y+5) //выбираем пункт меню
else
log ("не нашли")
goto (begin)
end_if
-
Для начала исправим ошибки. И нечего придумывать свои команды они все равно работать не будут
LOGWRITE ("ищем иконку")
GETSCREEN
IF_PICTURE_IN (50,980,1023,1023,"1.bmp",-1,80)
RCLICK($_return1+15, $_return2+15) //открываем контекстное меню
WAITMS(500)
LOGWRITE ("нашли")
LOGWRITE ("x=", $x," y=", $y)
LOGWRITE ("открываем контекстное меню")
LOGWRITE ("ищем пункт в меню")
GETSCREEN
SCREENSHOT("глядим")
IF_PICTURE_IN (2,700,250,800,"2.bmp",-1,75)
MOVE($_return1+20, $_return2+5)
WAITMS(100)
LCLICK($_return1+20, $_return2+5) // выбираем пункт меню
WAITMS(500)
LOGWRITE ("нашли")
LOGWRITE ("x=", $x," y=", $y)
LOGWRITE ("выбираем пункт меню")
HALT // стоп
ELSE
LOGWRITE ("не нашли 2.bmp")
END_IF
ELSE
LOGWRITE ("не нашли 1.bmp")
END_IF
WAITMS(500)
-
мой код работает, выложил просто для ознакомления.
пишу лог в файл
SUB(LOG,$note) // подпрограмма лога с датой
//укорачиваем переменные
$th = $_time_h
$tm = $_time_m
$ts = $_time_s
$dd = $_date_d
$dm = $_date_m
$dy = $_date_y
//проверяем переменные на двузначность
IF(STRLEN($th)<2)
$th = STRCONCAT ("0", $th)
END_IF
IF(STRLEN($tm)<2)
$tm = STRCONCAT ("0", $tm)
END_IF
IF(STRLEN($ts)<2)
$ts = STRCONCAT ("0", $ts)
END_IF
IF(STRLEN($dd)<2)
$dd = STRCONCAT ("0", $dd)
END_IF
IF(STRLEN($dm)<2)
$dm = STRCONCAT ("0", $dm)
END_IF
IF(STRLEN($dy)<2)
$dy = STRCONCAT ("0", $dy)
END_IF
TFWRITE("otchet.txt", STRCONCAT($dd,".",$dm,".",$dy," ",$th,":",$tm,":",$ts, " ", $note)) // запись в файл
END_SUB
logwrite мне не подходит.
Проблема в том что когда срабатывает команда getscreen фоткается только рабочий стол, а открытое контекстное меню отсутствует на снимке.
-
Ну так ты и показывай весь скрипт. Мало ли что там напишут. Поверь, отсебятину частенько сунут.
...Возникает это при выборе простой или классической темы в Windows 7, а при теме AERO, все нормально...
Ну так сюда и копай.
Предложу варианты:
1. Без AERO нужный пункт меню на 1 месте и его закрывает курсор... ну х.з.
2. Без AERO начинают работать другие параметры прозрачности в системе. Не знаю у себя не крутил давно. Хотя с прозрачностями у людей как раз с AERO начинаются проблемы.
3. Ты сделал скрин контекстного меню в AERO при полупрозрачном окне меню. Т.к. меню на одном фоне(?) то ищет нормально. Без AERO, естественно, меню выглядит по другому.
4. То же, что и п.3 но со шрифтами. Разные темы-разные шрифты.
-
сразу после getscreen пишу команду сохранить скриншот, что бы увидеть что не так, а там тупо нет контекстного меню, хотя в этот момент оно точно открыто, как буд есть несколько слоев и прога фоткает самый нижний.
-
Ты случаем не привязался к рабочему столу?