Author Topic: Загрузка ЦП 100%, помогите разобратся  (Read 3379 times)

0 Members and 1 Guest are viewing this topic.

stadon

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Доброе время суток Уважаемые!
Помогите пожалуйста понять почему ЦП грузится на 100% и если возможно исправить скрипт.
Установлена Oracle VM VirtualBox там Windows XP PS3 x86 выделил 1GB виртуальной памяти и один процессор от i7-7700HQ.

Всю ночь сидел писал, тестил, читал форум и снова писал.
Все работает, но мне что то подсказывает что где-то что-то не так, иногда проскакивает строки кода (вывод из LOGWRITE).

Задача была что бы при вкл. ПК батником с автозагрузки запускался Ghrome и Clickermann, дальше вкладка с миллионами страниц..
1) идет проверка на загрузку страницы и javascript двумя bmp картинками.
2) сравнение картинками цвета, цепочка такая: синий подходит делаем скрин - следующая страница, если нет ищем серый - нашли - идем дальше, если нет ищем красный (это ошибка) - нашли - обновили, вернулись в начало проверок, если нет просто обновили и в начало.
3) все это дело в условии со временем, что бы через 5600 секунд перезагрузить ПК.

Вот код, посмотрите если не тяжело, буду очень благодарен! Заранее спасибо  :)

Code: (clickermann) [Select]
#autorun
WAIT(40)
IF($time1 < $_time_t)
   $time1 = $_time_t + 5600 // 5600 сек перезагрузка
   
   // Ожидание загрузки Chrome
   SUB(ожидание)
      $t = $_time_t + 30      // до 30 сек
      $check1 = 0
      WHILE($check1 = 0)
         GETSCREEN
         IF_PICTURE_IN (1650,270, 1820,306, "b.bmp", -1, 90)
            // Проверка 1 bmp
            // 0,0, $_xmax,$_ymax, file.bmp  53,26, 95,59,     12,1, 42,25, "file2.bmp"
            $check1 = 1
            WAITMS(100)
         ELSE             // если нет
            IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 90)
               // Проверка 2 bmp
               $check1 = 1
               WAITMS(100)
            ELSE         // если ничего не совпадает обновляем
               WAITMS(150)
               IF($t < $_time_t)
                  LOGWRITE ("ОБНОВИТЬ LC")
                  LCLICK(77,43)     // жмем LC по x, y
                  $t = $_time_t + 30
               END_IF
            END_IF
         END_IF
      END_CYC
   END_SUB
   // end ожидания
   
   // обновить страницу
   SUB(обновить)
      LCLICK(77,43)
      WAIT(5)
   END_SUB
   // end обновить страницу
   
   FOR ($i=0, $i<5000)   // начало цикла проверок,  повторить 5000 раз
      1:
      LOGWRITE ("1 СТАРТ")
      WAITMS(250)
      ожидание()
      //   LOGWRITE ("конец ожидания")
      LOGWRITE ("начало сравнения")
      $check2 = 0      // 1 сравнение
      WHILE($check2 = 0)
         WAITMS(150)
         GETSCREEN
         IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 90)
            $check2 = 1
            SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_xp1_", 1) // делаем скрин в  папку
            WAITMS(150)
            LOGWRITE ("GOOD НАЙДЕН")
         ELSE           // 2 сравнение
            WAITMS(250)
            LOGWRITE ("начало сравнения по серому цвету bmp картинкой")     // для точности
            $check2 = 0
            WHILE($check2 = 0)
               WAITMS(100)
               IF_PICTURE_IN (1610,375, 1765,535, "b.bmp", -1, 90)
                  $check2 = 1
                  LOGWRITE ("СЕРЫЙ найден")  // начать заново
                  WAITMS(150)
               ELSE       // 3 сравнение
                  LOGWRITE ("начало сравнения по красному цвету bmp картинкой")
                  $check3 = 0
                  WHILE($check3 = 0)
                     WAITMS(100)
                     IF_PICTURE_IN (1610,375, 1765,535, "red.bmp", -1, 90)
                        $check3 = 1
                        LOGWRITE ("красный найден")  // не подходит, ошибка, обновляем
                        LOGWRITE ("обновить страницу")
                        обновить()
                        WAITMS(150)
                        LOGWRITE ("В НАЧАЛО")
                        goto(1)        // Идем в начало
                     ELSE              // если вдруг отпадет инет
                        WAITMS(150)
                        LOGWRITE ("красный НЕ найден")
                        LOGWRITE ("обновить страницу")
                        обновить()
                        WAITMS(150)
                        LOGWRITE ("В НАЧАЛО")
                        goto(1)        // Идем в начало
                     END_IF
                  END_CYC
               END_IF
            END_CYC
         END_IF
      END_CYC
     
      LOGWRITE ("конец сравнения")
      WAITMS(150)
      LCLICK(1775,239)   // жмем след страницу
      LOGWRITE ("ЗАНОВО")
      WAIT(3)
   END_CYC
   
   FOR ($a=0, $a<1)        // после 5000 сравнений обновить страницу
      WAIT(5)
      LOGWRITE ("ОБНОВЛЕНИЕ, ПОСЛЕ 1 ФОР")
      обновить()
     
   END_CYC
   LOGWRITE ("RESTART")
END_IF

WAIT(10)
LCLICK(1892,7)
WAIT(5)
// рестарт ПК
EXECUTE ("TASKKILL","/ f /IM chrome.exe")
EXECUTE ("shutdown.exe", "/r /f /t 03")
HALT(1)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Загрузка ЦП 100%, помогите разобратся
« Reply #1 on: June 22, 2018, 09:16:27 AM »
Описание подпрограмм должно быть на первом уровне.
из циклов нельзя выпрыгивать через гото.
У тебя там было несколько бессмысленных циклов на 1 раз, все удалил.

Верный код
Code: (clickermann) [Select]
#autorun

// Ожидание загрузки Chrome
SUB(ожидание)
   $t = $_time_t + 30      // до 30 сек
   $check1 = 0
   WHILE($check1 = 0)
      GETSCREEN
      IF_PICTURE_IN (1650,270, 1820,306, "b.bmp", -1, 90)
         // Проверка 1 bmp
         // 0,0, $_xmax,$_ymax, file.bmp  53,26, 95,59,     12,1, 42,25, "file2.bmp"
         $check1 = 1
         WAITMS(100)
      ELSE             // если нет
         IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 90)
            // Проверка 2 bmp
            $check1 = 1
            WAITMS(100)
         ELSE         // если ничего не совпадает обновляем
            WAITMS(150)
            IF($t < $_time_t)
               LOGWRITE ("ОБНОВИТЬ LC")
               LCLICK(77,43)     // жмем LC по x, y
               WAITMS(100)
               $t = $_time_t + 30
            END_IF
         END_IF
      END_IF
   END_CYC
END_SUB
// end ожидания

// обновить страницу
SUB(обновить)
   LCLICK(77,43)
   WAIT(5)
END_SUB
// end обновить страницу

//=== Основной код ==========================================

WAIT(40)
IF($time1 < $_time_t)
   $time1 = $_time_t + 5600 // 5600 сек перезагрузка
   
   FOR($i=0, $i<5000)   // начало цикла проверок,  повторить 5000 раз
      LOGWRITE ("1 СТАРТ")
      WAITMS(250)
      ожидание()
      //   LOGWRITE ("конец ожидания")
      LOGWRITE ("начало сравнения")
      $check2 = 0      // 1 сравнение
      WHILE($check2 = 0)
         WAITMS(150)
         GETSCREEN
         IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 90)
            $check2 = 1
            SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_xp1_", 1) // делаем скрин в  папку
            WAITMS(150)
            LOGWRITE ("GOOD НАЙДЕН")
         ELSE           // 2 сравнение
            LOGWRITE ("начало сравнения по серому цвету bmp картинкой")     // для точности
            IF_PICTURE_IN (1610,375, 1765,535, "b.bmp", -1, 90)
               LOGWRITE ("СЕРЫЙ найден")  // начать заново
               WAITMS(150)
            ELSE       // 3 сравнение
               LOGWRITE ("начало сравнения по красному цвету bmp картинкой")
               IF_PICTURE_IN (1610,375, 1765,535, "red.bmp", -1, 90)
                  LOGWRITE ("красный найден")  // не подходит, ошибка, обновляем
                  LOGWRITE ("обновить страницу")
                  обновить()
                  WAITMS(150)
                  LOGWRITE ("В НАЧАЛО")
                  $check2 = 2        // Идем в начало
               ELSE              // если вдруг отпадет инет
                  WAITMS(150)
                  LOGWRITE ("красный НЕ найден")
                  LOGWRITE ("обновить страницу")
                  обновить()
                  WAITMS(150)
                  LOGWRITE ("В НАЧАЛО")
                  $check2 = 2        // Идем в начало
               END_IF
            END_IF
         END_IF
      END_CYC
      IF($check2 ! 2)
         LOGWRITE ("конец сравнения")
         WAITMS(150)
         LCLICK(1775,239)   // жмем след страницу
         LOGWRITE ("ЗАНОВО")
         WAIT(3)
      END_IF
   END_CYC
   
   // после 5000 сравнений обновить страницу
   WAIT(5)
   LOGWRITE ("ОБНОВЛЕНИЕ, ПОСЛЕ 1 ФОР")
   обновить()
   LOGWRITE ("RESTART")
END_IF

WAIT(10)
LCLICK(1892,7)
WAIT(5)
// рестарт ПК
EXECUTE ("TASKKILL","/ f /IM chrome.exe")
EXECUTE ("shutdown.exe", "/r /f /t 03")
HALT(1)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Загрузка ЦП 100%, помогите разобратся
« Reply #2 on: June 22, 2018, 09:25:10 AM »
На счет снижения нагрузки.

Можно ограничить область снимка GETSCREEN Конкретной областью поиска, только нужно будет перед каждым поиском написать GETSCREEN конкретной области.

Например
Code: (clickermann) [Select]
$check2 = 0      // 1 сравнение
WHILE($check2 = 0)
   WAITMS(150)
   GETSCREEN(1650,270, 1820,306)
   IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 90)
      $check2 = 1
      SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_xp1_", 1) // делаем скрин в  папку
      WAITMS(150)
      LOGWRITE ("GOOD НАЙДЕН")
   ELSE           // 2 сравнение
      LOGWRITE ("начало сравнения по серому цвету bmp картинкой")     // для точности
      GETSCREEN(1610,375, 1765,535)
      IF_PICTURE_IN (1610,375, 1765,535, "b.bmp", -1, 90)
         LOGWRITE ("СЕРЫЙ найден")  // начать заново
         WAITMS(150)
      ELSE       // 3 сравнение
         LOGWRITE ("начало сравнения по красному цвету bmp картинкой")   
         IF_PICTURE_IN (1610,375, 1765,535, "red.bmp", -1, 90)
            LOGWRITE ("красный найден")  // не подходит, ошибка, обновляем
            LOGWRITE ("обновить страницу")
            обновить()
            WAITMS(150)
            LOGWRITE ("В НАЧАЛО")
            $check2 = 2        // Идем в начало
         ELSE              // если вдруг отпадет инет
            WAITMS(150)
            LOGWRITE ("красный НЕ найден")
            LOGWRITE ("обновить страницу")
            обновить()
            WAITMS(150)
            LOGWRITE ("В НАЧАЛО")
            $check2 = 2        // Идем в начало
         END_IF
      END_IF
   END_IF
END_CYC

А еще есть ли смысл писать 90 % совпадения без использования цветокоррекции? Это ты сам придумал или просто от куда то скопировал? Процент совпадения меньше 100 создает дополнительную нагрузку и уменьшает скорость поиска.

stadon

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Загрузка ЦП 100%, помогите разобратся
« Reply #3 on: June 22, 2018, 06:03:03 PM »
А еще есть ли смысл писать 90 % совпадения без использования цветокоррекции? Это ты сам придумал или просто от куда то скопировал? Процент совпадения меньше 100 создает дополнительную нагрузку и уменьшает скорость поиска.

Спасибо за помощь, искал по форуму, рвал куски кода которые мне были нужны и правил пока код не заработает как мне нужно,  теперь я понял что за 90 ... исправил на 100.
Загрузка ЦП упала до 4-50% после добавления GETSCREEN с конкретной областью поиска.

Начал тестировать код который Вы дали и понял что я коментарии написал не правильно, изначально открыл страницу с серым цветом в Chrome и при запуске кликера с ожиданием 40 сек в логе я увидел:

17:42:04 1 СТАРТ
17:42:04 конец ожидания
17:42:04 начало сравнения
17:42:04 начало сравнения по серому цвету bmp картинкой
17:42:04 СЕРЫЙ найден
17:42:05 начало сравнения по серому цвету bmp картинкой
17:42:05 СЕРЫЙ найден
17:42:06 начало сравнения по серому цвету bmp картинкой
17:42:06 СЕРЫЙ найден
17:42:07 начало сравнения по серому цвету bmp картинкой
17:42:07 СЕРЫЙ найден...........
..............................................

Code: (clickermann) [Select]
ELSE           // 2 сравнение
            LOGWRITE ("начало сравнения по серому цвету bmp картинкой")     // для точности
            IF_PICTURE_IN (1610,375, 1765,535, "b.bmp", -1, 90)
               LOGWRITE ("СЕРЫЙ найден")  // начать заново
               WAITMS(150)
            ELSE       // 3 сравнение

в задумке должно было закончить сравнение (нажать на следующую страницу строка 90.) и начать цикл заново
Верный код
Code: (clickermann) [Select]
#autorun

// Ожидание загрузки Chrome
SUB(ожидание)
   $t = $_time_t + 30      // до 30 сек
   $check1 = 0
   WHILE($check1 = 0)
      GETSCREEN
      IF_PICTURE_IN (1650,270, 1820,306, "b.bmp", -1, 90)
         // Проверка 1 bmp
         // 0,0, $_xmax,$_ymax, file.bmp  53,26, 95,59,     12,1, 42,25, "file2.bmp"
         $check1 = 1
         WAITMS(100)
      ELSE             // если нет
         IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 90)
            // Проверка 2 bmp
            $check1 = 1
            WAITMS(100)
         ELSE         // если ничего не совпадает обновляем
            WAITMS(150)
            IF($t < $_time_t)
               LOGWRITE ("ОБНОВИТЬ LC")
               LCLICK(77,43)     // жмем LC по x, y
               WAITMS(100)
               $t = $_time_t + 30
            END_IF
         END_IF
      END_IF
   END_CYC
END_SUB
// end ожидания

// обновить страницу
SUB(обновить)
   LCLICK(77,43)
   WAIT(5)
END_SUB
// end обновить страницу

//=== Основной код ==========================================

WAIT(40)
IF($time1 < $_time_t)
   $time1 = $_time_t + 5600 // 5600 сек перезагрузка
   
   FOR($i=0, $i<5000)   // начало цикла проверок,  повторить 5000 раз
      LOGWRITE ("1 СТАРТ")
      WAITMS(250)
      ожидание()
      //   LOGWRITE ("конец ожидания")
      LOGWRITE ("начало сравнения")
      $check2 = 0      // 1 сравнение
      WHILE($check2 = 0)
         WAITMS(150)
         GETSCREEN
         IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 90)
            $check2 = 1
            SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_xp1_", 1) // делаем скрин в  папку
            WAITMS(150)
            LOGWRITE ("GOOD НАЙДЕН")
         ELSE           // 2 сравнение
            LOGWRITE ("начало сравнения по серому цвету bmp картинкой")     // для точности
            IF_PICTURE_IN (1610,375, 1765,535, "b.bmp", -1, 90)
               LOGWRITE ("СЕРЫЙ найден")  // начать заново
               WAITMS(150)
            ELSE       // 3 сравнение
               LOGWRITE ("начало сравнения по красному цвету bmp картинкой")
               IF_PICTURE_IN (1610,375, 1765,535, "red.bmp", -1, 90)
                  LOGWRITE ("красный найден")  // не подходит, ошибка, обновляем
                  LOGWRITE ("обновить страницу")
                  обновить()
                  WAITMS(150)
                  LOGWRITE ("В НАЧАЛО")
                  $check2 = 2        // Идем в начало
               ELSE              // если вдруг отпадет инет
                  WAITMS(150)
                  LOGWRITE ("красный НЕ найден")
                  LOGWRITE ("обновить страницу")
                  обновить()
                  WAITMS(150)
                  LOGWRITE ("В НАЧАЛО")
                  $check2 = 2        // Идем в начало
               END_IF
            END_IF
         END_IF
      END_CYC
      IF($check2 ! 2)
         LOGWRITE ("конец сравнения")
         WAITMS(150)
         LCLICK(1775,239)   // жмем след страницу
         LOGWRITE ("ЗАНОВО")
         WAIT(3)
      END_IF
   END_CYC
   
   // после 5000 сравнений обновить страницу
   WAIT(5)
   LOGWRITE ("ОБНОВЛЕНИЕ, ПОСЛЕ 1 ФОР")
   обновить()
   LOGWRITE ("RESTART")
END_IF

WAIT(10)
LCLICK(1892,7)
WAIT(5)
// рестарт ПК
EXECUTE ("TASKKILL","/ f /IM chrome.exe")
EXECUTE ("shutdown.exe", "/r /f /t 03")
HALT(1)

Думал переделать свой код с Вашими исправлениями но у меня там GOTO, по другому я не понимаю как ( склад ума не кодера и практики нет...

Если не в тягость исправьте пожалуйста что бы было:
Зашел в цикл:
1 сравнение: синий нашли делаем скрин - следующая страница, цикл заново, - если нет ищем серый
2 сравнение: нашли серый - БЕЗ скрина следующая страница, цикл заново, - если нет ищем красный (это ошибка, страница загрузилась не полностью или не правильно)
3 сравнение: нашли красный - обновили, вернулись в начало проверок, если нет - просто обновили и в начало проверок.


stadon

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Загрузка ЦП 100%, помогите разобратся
« Reply #4 on: June 22, 2018, 06:13:30 PM »
IF($time1 < $_time_t)
   $time1 = $_time_t + 5600 // 5600 сек перезагрузка   
 это   ваше условие вообще работать не будет, так как после после перезагрузки компа и перезапуска программы переменные обнулятся

так было и задумано, перезагрузка, обнуление и заново  :)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Загрузка ЦП 100%, помогите разобратся
« Reply #5 on: June 23, 2018, 06:40:00 AM »
IF($time1 < $_time_t)
   $time1 = $_time_t + 5600 // 5600 сек перезагрузка   
 это   ваше условие вообще работать не будет, так как после после перезагрузки компа и перезапуска программы переменные обнулятся

так было и задумано, перезагрузка, обнуление и заново  :)

Условие
Code: (clickermann) [Select]
IF($time1 < $_time_t)
   $time1 = $_time_t + 5600 // 5600 сек перезагрузка
второй раз никогда не выполнится потому что скрипт в конце завершает свою работу. А значит писать его здесь бессмысленно.

Для понимания этого условия:
$_time_t - это системная переменная, возвращает текущее время Unix в секундах. Значение постоянно увеличивается.
$time1 = $_time_t + 5600 - здесь мы записываем в переменную $time1 время Unix + 5600 секунд
IF($time1 < $_time_t) - в результате при последующих проходах скрипта условие снова выполнится только когда текущее время нагонит значение в переменной $time1

Вроде написал как ты хотел. Добавил директиву #logfile. Теперь лог будет записываться в файл рядом со скриптом, чтоб он остался после перезагрузки.
Code: (clickermann) [Select]
#autorun
#logfile

// Ожидание загрузки Chrome
SUB(ожидание)
   $t = $_time_t + 30      // до 30 сек
   $check1 = 0
   WHILE($check1 = 0)
      GETSCREEN
      IF_PICTURE_IN (1650,270, 1820,306, "b.bmp", -1, 100)
         // Проверка 1 bmp
         // 0,0, $_xmax,$_ymax, file.bmp  53,26, 95,59,     12,1, 42,25, "file2.bmp"
         $check1 = 1
         WAITMS(100)
      ELSE             // если нет
         IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 100)
            // Проверка 2 bmp
            $check1 = 1
            WAITMS(100)
         ELSE         // если ничего не совпадает обновляем
            WAITMS(150)
            IF($t < $_time_t)
               LOGWRITE ("ОБНОВИТЬ LC")
               LCLICK(77,43)     // жмем LC по x, y
               WAITMS(100)
               $t = $_time_t + 30
            END_IF
         END_IF
      END_IF
   END_CYC
END_SUB
// end ожидания

// обновить страницу
SUB(обновить)
   LCLICK(77,43)
   WAIT(5)
END_SUB
// end обновить страницу

//=== Основной код ==========================================

WAIT(40)
IF($time1 < $_time_t)
   $time1 = $_time_t + 5600 // 5600 сек перезагрузка
   
   FOR($i=0, $i<5000)   // начало цикла проверок,  повторить 5000 раз
      LOGWRITE ("1 СТАРТ")
      WAITMS(250)
      ожидание()
      //   LOGWRITE ("конец ожидания")
      LOGWRITE ("начало сравнения")
      $check2 = 0      // 1 сравнение
      WHILE($check2 = 0)
         WAITMS(150)
         GETSCREEN(1650,270, 1820,306)
         IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 100)
            SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_xp1_", 1) // делаем скрин в  папку
            WAITMS(150)
            LOGWRITE ("GOOD НАЙДЕН")
            LCLICK(1775,239)   // жмем след страницу
            LOGWRITE ("ЗАНОВО")
            WAIT(3)
         ELSE           // 2 сравнение
            LOGWRITE ("начало сравнения по серому цвету bmp картинкой")     // для точности
            GETSCREEN(1610,375, 1765,535)
            IF_PICTURE_IN (1610,375, 1765,535, "b.bmp", -1, 100)
               LOGWRITE ("СЕРЫЙ найден")  // начать заново
               WAITMS(150)
               LCLICK(1775,239)   // жмем след страницу
               LOGWRITE ("ЗАНОВО")
               WAIT(3)
            ELSE       // 3 сравнение
               LOGWRITE ("начало сравнения по красному цвету bmp картинкой")
               IF_PICTURE_IN (1610,375, 1765,535, "red.bmp", -1, 100)
                  LOGWRITE ("красный найден")  // не подходит, ошибка, обновляем
                  LOGWRITE ("обновить страницу")
                  обновить()
                  WAITMS(150)
                  LOGWRITE ("В НАЧАЛО")
                  $check2 = 1        // Идем в начало
               ELSE              // если вдруг отпадет инет
                  WAITMS(150)
                  LOGWRITE ("красный НЕ найден")
                  LOGWRITE ("обновить страницу")
                  обновить()
                  WAITMS(150)
                  LOGWRITE ("В НАЧАЛО")
                  $check2 = 1        // Идем в начало
               END_IF
            END_IF
         END_IF
      END_CYC
      LOGWRITE ("конец сравнения")
   END_CYC
   
   // после 5000 сравнений обновить страницу
   WAIT(5)
   LOGWRITE ("ОБНОВЛЕНИЕ, ПОСЛЕ 1 ФОР")
   обновить()
   LOGWRITE ("RESTART")
END_IF

WAIT(10)
LCLICK(1892,7)
WAIT(5)
// рестарт ПК
EXECUTE ("TASKKILL","/ f /IM chrome.exe")
EXECUTE ("shutdown.exe", "/r /f /t 03")
HALT(1)
« Last Edit: June 23, 2018, 06:44:51 AM by Oraven »

stadon

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Загрузка ЦП 100%, помогите разобратся
« Reply #6 on: June 23, 2018, 10:35:27 AM »
Спасибо Oraven! :) добавил пару строк и заработало как я хотел!
Удалил лишний код, с временем решил не играться, оставил просто что бы через 5000 повторов была перезагрузка.

вот код который мне был нужен, точнее конечный и правильный результат
Code: (clickermann) [Select]
#autorun
#logfile

// Ожидание загрузки Chrome
SUB(ожидание)
   $t = $_time_t + 30      // до 30 сек
   $check1 = 0
   WHILE($check1 = 0)
      GETSCREEN(1650,270, 1820,306)
      IF_PICTURE_IN (1650,270, 1820,306, "b.bmp", -1, 100)
         // Проверка 1 bmp
         $check1 = 1
         WAITMS(100)
      ELSE             // если нет
         IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 100)
            // Проверка 2 bmp
            $check1 = 1
            WAITMS(100)
         ELSE         // если ничего не совпадает обновляем
            WAITMS(150)
            IF($t < $_time_t)
               LOGWRITE ("ОБНОВИТЬ LC")
               LCLICK(77,43)     // жмем LC по x, y
               WAITMS(100)
               $t = $_time_t + 30
            END_IF
         END_IF
      END_IF
   END_CYC
END_SUB
// end ожидания

// обновить страницу
SUB(обновить)
   LCLICK(77,43)
   WAIT(5)
END_SUB
// end обновить страницу

//=== Основной код ==========================================

WAIT(40)
LOGWRITE ("НАЧАЛО ФОР")
FOR($i=0, $i<5000)   // начало цикла проверок,  повторить 5000 раз
   LOGWRITE ("1 СТАРТ")
   WAITMS(250)
   ожидание()
   LOGWRITE ("НАЧАЛО сравнения")
   $check2 = 0      // 1 сравнение
   WHILE($check2 = 0)
      WAITMS(150)
      GETSCREEN(1650,270, 1820,306)
      IF_PICTURE_IN (1650,270, 1820,306, "b2.bmp", -1, 100)
         GETSCREEN
         SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_xp1_", 1) // делаем скрин в  папку
         SOUND("Dring.wav")           // немного музыки в минуты радости :)
         WAITMS(150)
         LOGWRITE ("GOOD НАЙДЕН")
         LCLICK(1775,239)   // жмем след страницу
         WAIT(3)
         $check2 = 1        // Идем в начало
      ELSE           // 2 сравнение
         LOGWRITE ("начало сравнения по серому цвету bmp картинкой")     // для точности
         GETSCREEN(1610,375, 1765,535)
         IF_PICTURE_IN (1610,375, 1765,535, "b.bmp", -1, 100)
            LOGWRITE ("СЕРЫЙ найден")
            WAITMS(150)
            LOGWRITE ("жмем след страницу")
            LCLICK(1775,239)   // жмем след страницу
            WAIT(3)
            $check2 = 1        // Идем в начало
         ELSE       // 3 сравнение
            LOGWRITE ("начало сравнения по красному цвету bmp картинкой")
            IF_PICTURE_IN (1610,375, 1765,535, "red.bmp", -1, 100)
               LOGWRITE ("красный найден")  // не подходит, ошибка, обновляем
               LOGWRITE ("обновить страницу")
               обновить()
               WAITMS(150)
               LOGWRITE ("В НАЧАЛО")
               $check2 = 1        // Идем в начало
            ELSE              // если вдруг отпадет инет
               WAITMS(150)
               LOGWRITE ("красный НЕ найден")
               LOGWRITE ("обновить страницу")
               обновить()
               WAITMS(150)
               LOGWRITE ("В НАЧАЛО")
               $check2 = 1        // Идем в начало
            END_IF
         END_IF
      END_IF
   END_CYC
   LOGWRITE ("конец сравнения")
END_CYC
LOGWRITE ("RESTART")

WAIT(10)
LCLICK(1892,7)
WAIT(5)
// рестарт ПК
EXECUTE ("TASKKILL","/ f /IM chrome.exe")
EXECUTE ("shutdown.exe", "/r /f /t 03")
HALT(1)

Всем добра  ;)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Загрузка ЦП 100%, помогите разобратся
« Reply #7 on: June 23, 2018, 11:49:29 AM »
вот код который мне был нужен, точнее конечный и правильный результат

Вот опять, нафига цикл
Code: (clickermann) [Select]
   $check2 = 0      // 1 сравнение
   WHILE($check2 = 0)
если при любом варианте происходит выход из него $check2 = 1 ?
Получается и этот цикл не нужен...

stadon

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Загрузка ЦП 100%, помогите разобратся
« Reply #8 on: June 23, 2018, 12:25:13 PM »
Вот опять, нафига цикл
Code: (clickermann) [Select]
   $check2 = 0      // 1 сравнение
   WHILE($check2 = 0)
если при любом варианте происходит выход из него $check2 = 1 ?
Получается и этот цикл не нужен...

Простите, но я не понял вопроса ((

Я пока тестил: сравнивал все варианты, перезагружал ПК, вырубал интернет, крашил страницу... Выпил литр кофе :-\

Суть в том что оно работает как мне было нужно и ЦП грузит в половину, я доволен, Вам спасибо!  ;)