Author Topic: Приостановка макроса пока на экране не появится нужный элемент(поиск по картинк)  (Read 1485 times)

0 Members and 1 Guest are viewing this topic.

Masson

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Добрый день, нужна ваша помощь.

У меня есть действие обработки в программе, занимает примерно от 10 до 60 секунд. примерно где то в середине обработки в программе вылазит диалоговое окно, где нужно подтвердить действие. Я его обычно подтверждаю с помощью строчек:
Code: [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax,"yes.bmp")
KEYPRESS(#enter)
  WAITMS (500)
END_IF

Возможно ли сделать с помощью кликермена так, чтобы он задерживал весь цикл макроса на данном этапе, пока не увидит это диалоговое окно и не нажмет, допустим - Enter?

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Code: (clickermann) [Select]
$press = 0
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN(0,0,$_xmax,$_ymax,"yes.bmp")
      KEYPRESS(#ENTER)
      WAITMS(500)
      $press = 1
   ELSE
      IF($press = 1)
         $check = 1
      END_IF
   END_IF
END_CYC
« Last Edit: March 04, 2019, 01:17:31 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Masson

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Code: (clickermann) [Select]
$press = 0
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN(0,0,$_xmax,$_ymax,"yes.bmp")
      KEYPRESS(#ENTER)
      WAITMS(500)
      $press = 1
   ELSE
      IF($press = 1)
         $check = 1
      END_IF
   END_IF
END_CYC

Спасибо большое, все работает как надо!

Masson

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Друзья,а можно с помощью данного цикла сделать чтобы он проверял сразу 2 картинки. Искал рис. 1, рис.2. Если находит рис 1.  переходил бы к поиску рис. 2 и работал в стандартном цикле. Если рис 2. забывал бы про поиск рис.1 и работал в стандартном цикле

Fuego47

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
А если в таком же ключе ожидается 3 картинки, но появится только одна из них, и в каждой нужно нажать разные клавиши. Как сделать чтобы цикл не закрывался пока не сделает одно из 3х IF_PICTURE_IN?
Code: (clickermann) [Select]
$press = 0
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN(0,0,$_xmax,$_ymax,"yes.bmp")
      KEYPRESS(#ENTER)
      WAITMS(500)
      $press = 1
   ELSE
      IF($press = 1)
         $check = 1
      END_IF
   END_IF
END_CYC

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Code: (clickermann) [Select]
// Имена картинок от 1 до 3

$count = 0
$press = 0
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN(0,0,$_xmax,$_ymax, STRCONCAT(1 + $count, ".bmp"), - 1, 100)
      KEYPRESS(49+$count) // Нажмёт на кнопку 1 если картинка 1 и т.д.
      WAITMS(500)
      $press = 1 // если картинка не будет повторно найдена, то произойдет выход из цикла
   ELSE
      INC($count, 1)
      IF($count = 3)
         $count = 0
      END_IF
      IF($press = 1)
         $check = 1
      END_IF
   END_IF
END_CYC
« Last Edit: March 07, 2019, 05:08:11 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»