Author Topic: Если не нашел GETSCREEN, то пропускает часть сценария. Как сделать?  (Read 2745 times)

0 Members and 2 Guests are viewing this topic.

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Добрый день! В кликере я чайник. Буду рад, если поможете:)

1) В общем, есть одна кнопка на сайте, которая не всегда есть. Если она есть, то кликер нажимает на нее и затем делает действие в сплывающем окне (начинает сценарий с кнопкой) Затем продолжает сценарий. Если такой кнопки нет, то кликер пропускает действие в окне и сразу продолжает сценарий. Можно ли такое сделать?
Заранее огромное спасибо:)

Code: (clickermann) [Select]
WAIT(1)      //предыдущий сценарий
GETSCREEN(107,339,200,975) //Начало сценария с кнопкой
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "все контакты.bmp")
   LCLICK($_return1+46, $_return2+7)
   WAITMS(150)
END_IF
WAITMS(400)
GETSCREEN(83,305,109,972) //иконка почты
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "почта.bmp")
   LCLICK($_return1+2, $_return2+2)
   WAITMS(50)
   LCLICK($_return1+2, $_return2+2)
   WAITMS(50)
   LCLICK($_return1+2, $_return2+2)
   WAITMS(50)
END_IF
WAITMS(400)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#C)
KEYUP (#CTRL)
WAITMS(400)
LCLICK(22,14)
WAITMS(300)
GETSCREEN(26,338,185,385) //Почта
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "основная информация.bmp")
   LCLICK($_return1+300, $_return2+306)
END_IF
WAITMS(400)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)
WAITMS(400)
LCLICK(64,14)  //Завершение сценария с кнопкой
WAITMS(300)  //следующий сценарий

2) То же самое и с этим скриптом. Если находит скрин на сайте, то кликает средней кнопкой мыши. Всё. Если нет, то просто пропускает его.
Code: (clickermann) [Select]
GETSCREEN(76,273,111,975) //Сайт
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "сайт.bmp")
   MCLICK($_return1+38, $_return2+8)
   WAITMS(150)
END_IF
WAITMS(300)

3) Как лучше сделать тройной клик мышью в одно место? Циклом (то можно скрипт?) или так, как есть?
« Last Edit: June 18, 2019, 08:34:54 AM by SanSib »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Снимок делаешь в ограниченной области а ищешь потом на всем экране
Code: (clickermann) [Select]
GETSCREEN(107,339,200,975) //Начало сценария с кнопкой
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "все контакты.bmp")

Ну так надо искать картинку этой кнопки, и если она есть выполнять сценарий.
Code: (clickermann) [Select]
WAIT(1)      //предыдущий сценарий
//Начало сценария с кнопкой
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // ищем кнопку
   GETSCREEN(107,339,200,975)
   IF_PICTURE_IN (107,339,200,975, "все контакты.bmp")
      LCLICK($_return1+46, $_return2+7)
      WAITMS(500)
   END_IF
   
   GETSCREEN(83,305,109,972) //иконка почты
   IF_PICTURE_IN (83,305,109,972, "почта.bmp")
      FOR($a=0,$a<3)
         LCLICK($_return1+2, $_return2+2)
         WAITMS(50)
      END_CYC
      WAITMS(400)
   END_IF
   
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#C)
   KEYUP (#CTRL)
   WAITMS(400)
   
   LCLICK(22,14)
   WAITMS(300)
   
   GETSCREEN(26,338,185,385) //Почта
   IF_PICTURE_IN (26,338,185,385, "основная информация.bmp")
      LCLICK($_return1+300, $_return2+306)
      WAITMS(400)
   END_IF
   
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#V)
   KEYUP (#CTRL)
   WAITMS(400)
   
   LCLICK(64,14)  //Завершение сценария с кнопкой
   WAITMS(300)
END_IF
//следующий сценарий

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Снимок делаешь в ограниченной области а ищешь потом на всем экране
Code: (clickermann) [Select]
GETSCREEN(107,339,200,975) //Начало сценария с кнопкой
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "все контакты.bmp")

Ну так надо искать картинку этой кнопки, и если она есть выполнять сценарий.
Code: (clickermann) [Select]
WAIT(1)      //предыдущий сценарий
//Начало сценария с кнопкой
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // ищем кнопку
   GETSCREEN(107,339,200,975)
   IF_PICTURE_IN (107,339,200,975, "все контакты.bmp")
      LCLICK($_return1+46, $_return2+7)
      WAITMS(500)
   END_IF
   
   GETSCREEN(83,305,109,972) //иконка почты
   IF_PICTURE_IN (83,305,109,972, "почта.bmp")
      FOR($a=0,$a<3)
         LCLICK($_return1+2, $_return2+2)
         WAITMS(50)
      END_CYC
      WAITMS(400)
   END_IF
   
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#C)
   KEYUP (#CTRL)
   WAITMS(400)
   
   LCLICK(22,14)
   WAITMS(300)
   
   GETSCREEN(26,338,185,385) //Почта
   IF_PICTURE_IN (26,338,185,385, "основная информация.bmp")
      LCLICK($_return1+300, $_return2+306)
      WAITMS(400)
   END_IF
   
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#V)
   KEYUP (#CTRL)
   WAITMS(400)
   
   LCLICK(64,14)  //Завершение сценария с кнопкой
   WAITMS(300)
END_IF
//следующий сценарий
Кнопка и есть "все контакты" и есть только в определенной области:) Зачем искать еще файл на всем экране?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Кнопка и есть "все контакты" и есть только в определенной области:) Зачем искать еще файл на всем экране?

Если для тебя это очевидно то я не экстрасенс знать что в твоем коде "все контакты" это оказывается кнопка.
Code: (clickermann) [Select]
WAIT(1)      //предыдущий сценарий
GETSCREEN(107,339,200,975) //Начало сценария с кнопкой
IF_PICTURE_IN (107,339,200,975, "все контакты.bmp")
   LCLICK($_return1+46, $_return2+7)
   WAITMS(500)
   GETSCREEN(83,305,109,972) //иконка почты
   IF_PICTURE_IN (83,305,109,972, "почта.bmp")
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
   END_IF
   WAITMS(400)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#C)
   KEYUP (#CTRL)
   WAITMS(400)
   LCLICK(22,14)
   WAITMS(300)
   GETSCREEN(26,338,185,385) //Почта
   IF_PICTURE_IN (26,338,185,385, "основная информация.bmp")
      LCLICK($_return1+300, $_return2+306)
   END_IF
   WAITMS(400)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#V)
   KEYUP (#CTRL)
   WAITMS(400)
   LCLICK(64,14)  //Завершение сценария с кнопкой
   WAITMS(300)  //следующий сценарий
END_IF

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Кнопка и есть "все контакты" и есть только в определенной области:) Зачем искать еще файл на всем экране?

Это было не указание к действию, а риторический вопрос к твоему коду. Просто знак вопроса в конце не проставлен:

Снимок делаешь в ограниченной области а ищешь потом на всем экране
Code: (clickermann) [Select]
GETSCREEN(107,339,200,975) //Начало сценария с кнопкой
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "все контакты.bmp")

Имелось ввиду, чтобы ты обратил внимание, что у тебя GETSCREEN идёт по области и следом поиск по всему экрану. Поиск тоже нужно сделать по области:
Code: (clickermann) [Select]
    GETSCREEN(107,339,200,975) //Начало сценария с кнопкой
    IF_PICTURE_IN(107,339,200,975, "все контакты.bmp")


3) Как лучше сделать тройной клик мышью в одно место? Циклом (то можно скрипт?) или так, как есть?
Как тебе удобно. Всё что больше двух удобней и компактней циклом. И легко править в дальнейшем.


Старайся избегать общих формулировок "определённая область", "одна кнопка" и т.п. У тебя же приложен код, вот и указывай конкретно:
При поиске кнопки в строке 9...  или При поиске "почта.bmp"... сделать то-то и то-то.
А то в начальном коде у тебя было три поиска, ХЗ какой для тебя нужный в который вложить всё остальное.

Всё просто IF_PICTURE_IN это такое Условие-поиск. Если картинка нашлась, выполняется вложенный код до END_IF (кроме блока ELSE).
Вот и вкладывай туда всё что нужно, а не только клик.
« Last Edit: June 18, 2019, 03:32:40 PM by Vint »


SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Кнопка и есть "все контакты" и есть только в определенной области:) Зачем искать еще файл на всем экране?

Если для тебя это очевидно то я не экстрасенс знать что в твоем коде "все контакты" это оказывается кнопка.
Code: (clickermann) [Select]
WAIT(1)      //предыдущий сценарий
GETSCREEN(107,339,200,975) //Начало сценария с кнопкой
IF_PICTURE_IN (107,339,200,975, "все контакты.bmp")
   LCLICK($_return1+46, $_return2+7)
   WAITMS(500)
   GETSCREEN(83,305,109,972) //иконка почты
   IF_PICTURE_IN (83,305,109,972, "почта.bmp")
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
   END_IF
   WAITMS(400)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#C)
   KEYUP (#CTRL)
   WAITMS(400)
   LCLICK(22,14)
   WAITMS(300)
   GETSCREEN(26,338,185,385) //Почта
   IF_PICTURE_IN (26,338,185,385, "основная информация.bmp")
      LCLICK($_return1+300, $_return2+306)
   END_IF
   WAITMS(400)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#V)
   KEYUP (#CTRL)
   WAITMS(400)
   LCLICK(64,14)  //Завершение сценария с кнопкой
   WAITMS(300)  //следующий сценарий
END_IF
Спасибо большое!!! Во всём разобрался:)
Чем могу отблагодарить?

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Кнопка и есть "все контакты" и есть только в определенной области:) Зачем искать еще файл на всем экране?

Если для тебя это очевидно то я не экстрасенс знать что в твоем коде "все контакты" это оказывается кнопка.
Code: (clickermann) [Select]
WAIT(1)      //предыдущий сценарий
GETSCREEN(107,339,200,975) //Начало сценария с кнопкой
IF_PICTURE_IN (107,339,200,975, "все контакты.bmp")
   LCLICK($_return1+46, $_return2+7)
   WAITMS(500)
   GETSCREEN(83,305,109,972) //иконка почты
   IF_PICTURE_IN (83,305,109,972, "почта.bmp")
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
      LCLICK($_return1+2, $_return2+2)
      WAITMS(50)
   END_IF
   WAITMS(400)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#C)
   KEYUP (#CTRL)
   WAITMS(400)
   LCLICK(22,14)
   WAITMS(300)
   GETSCREEN(26,338,185,385) //Почта
   IF_PICTURE_IN (26,338,185,385, "основная информация.bmp")
      LCLICK($_return1+300, $_return2+306)
   END_IF
   WAITMS(400)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#V)
   KEYUP (#CTRL)
   WAITMS(400)
   LCLICK(64,14)  //Завершение сценария с кнопкой
   WAITMS(300)  //следующий сценарий
END_IF
Просто мне казалось, что это будет сложно и муторно с использованием метки и неизвестных функций. Поэтому даже не заметил особых изменений в вашем изменении с самого начала. Про кнопку я не знал, может так и должно быть. Я очень далек от программирования. Спасибо!))))