Author Topic: Подпрограмма помогите не доходит  (Read 9386 times)

0 Members and 1 Guest are viewing this topic.

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #15 on: August 28, 2017, 09:50:16 PM »
Не работает, сразу остановка скрипта. Вот лог:
22:49:16 AGClient hwnd: 0
22:49:20 Всё пропало, шеф! Ничего не получилось.

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #16 on: August 28, 2017, 09:56:42 PM »
Не работает, сразу остановка скрипта. Вот лог:
22:49:16 AGClient hwnd: 0
22:49:20 Всё пропало, шеф! Ничего не получилось.
С запущеным AGClient`ом такой результат? Или забыл про него?

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #17 on: August 28, 2017, 10:11:28 PM »
Quote
С запущеным AGClient`ом такой результат? Или забыл про него?
С запущенным AGClient`ом. Он у меня сам запускается вот строки в основном скрипте:
Code: (clickermann) [Select]
IF( wndfind("AGClient v1.5"))
   WAITMS(100)
ELSE
   execute("AGClient.exe")
   WAITMS(300)
   wndpos( wndfind("AGClient v1.5"), 1000, 219)
   WAITMS(100)
   LCLICK(1122,314)
END_IF

// Подгружаемый скрипт
cap4a()
« Last Edit: August 28, 2017, 10:14:08 PM by Ramzesia »

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #18 on: August 28, 2017, 10:34:42 PM »
Где находится строчка
Code: (clickermann) [Select]
#include "cap4a.cms"

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #19 on: August 28, 2017, 10:39:57 PM »
Где находится строчка
Code: (clickermann) [Select]
#include "cap4a.cms"
В начале скрипта.
Code: (clickermann) [Select]
#name "WOF"
#include "cap4a.cms"
wndpos( wndfind("NoxPlayer"), 0, 0)

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #20 on: August 28, 2017, 10:45:56 PM »
Вот это
Code: (clickermann) [Select]
$hwnd = wndFind("AGClient v1.5") // находим окно
LOGWRITE ("AGClient hwnd: ", $hwnd)
вырежи из "cap4a.cms" и вставь в основной скрипт после
Code: (clickermann) [Select]
IF( wndfind("AGClient v1.5"))
   WAITMS(100)
ELSE
   execute("AGClient.exe")
   WAITMS(300)
   wndpos( wndfind("AGClient v1.5"), 1000, 219)
   WAITMS(100)
   LCLICK(1122,314)
END_IF

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #21 on: August 28, 2017, 10:58:19 PM »
Не работает, сразу остановка скрипта. Вот лог:
22:49:16 AGClient hwnd: 0
22:49:20 Всё пропало, шеф! Ничего не получилось.
а у тебя точно версия 1.5? дело в том, что эта версия есть пока только тут http://crapware.aidf.org/forum/index.php?topic=73.msg14680#msg14680 . а на офсайте сейчас версия 1.4 , хоть и на писано на ссылке что 1.3  :D .

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #22 on: August 28, 2017, 11:00:55 PM »
Не работает, сразу остановка скрипта. Вот лог:
22:49:16 AGClient hwnd: 0
22:49:20 Всё пропало, шеф! Ничего не получилось.
а у тебя точно версия 1.5? дело в том, что эта версия есть пока только тут http://crapware.aidf.org/forum/index.php?topic=73.msg14680#msg14680 . а на офсайте сейчас версия 1.4 , хоть и на писано на ссылке что 1.3  :D .
Я с этого поста и скачивал. Точно 1.5

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #23 on: August 28, 2017, 11:00:59 PM »
Директива #include "cap4a.cms" просто заменяет собой весь код который находится в файле cap4a.cms. Это то-же самое если написать весь код из подключаемого файла в основном. Никакого волшебства тут нет. Сделано для удобства. Надо это понимать при использовании. И форум чаще  и больше читать.

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #24 on: August 28, 2017, 11:01:15 PM »
Типа так?

Основной скрипт
Code: (clickermann) [Select]
#name "WOF"
#include "cap4a.cms"
wndpos( wndfind("NoxPlayer"), 0, 0)

IF( wndfind("AGClient v1.5"))
   WAITMS(100)
ELSE
   execute("AGClient.exe")
   WAITMS(300)
   wndpos( wndfind("AGClient v1.5"), 1000, 219)
   WAITMS(100)
   LCLICK(1122,314)
END_IF

$hwnd = wndFind("AGClient v1.5") // находим окно
LOGWRITE ("AGClient hwnd: ", $hwnd)
cap4a()

kap4a.cms
[spoiler]
Code: (clickermann) [Select]
WAIT(1)
 
// Область снимка капчи
$x1 = 285
$y1 = 160
$x2 = 675
$y2 = 280
 
 
SUB(cap4a)
    FOR($cap4a=0, $cap4a < 3) // цикл распознавания капчи
        GETSCREEN(450,430, 490,470)
        COLORMODE(6, 450,430, 490,470)
        IF_PICTURE_IN (450,430, 490,470, "texture\K.bmp", -1, 70) // Капча нашлась
            TFCLEAR("out.txt")
            WAITMS(50)
            TFWRITE("out.txt", "0")
            waitms(200)
 
            // последовательное задание координат
            PostMessage($hwnd, 0x555, 1, $x1)
            PostMessage($hwnd, 0x555, 2, $y1)
            PostMessage($hwnd, 0x555, 3, $x2)
            PostMessage($hwnd, 0x555, 4, $y2)
            PostMessage($hwnd, 0x555, 5, 0) // распознать
            waitms(200)
            $response = 0
 
            $time_cap4a = $_time_t + 60  // ограничение 60 сек на ответ
            WHILE(($response = 0) & ($time_cap4a < $_time_t))
                $response = TFREAD("out.txt", 1)
                WAITMS(500)
            END_CYC
 
            IF($response = 1)
                $str = TFREAD("out.txt", 2)
                LOGWRITE("Распознано. Ответ: ", $str)
                FOR($step=1, $step < 4)
                    $click = STRCUT($str, $step, 1)
                    WAITMS(100)
                    SWITCH($click)
                    CASE(1)
                        LCLICK(350,330)
                    CASE(2)
                        LCLICK(475,330)
                    CASE(3)
                        LCLICK(600,330)
                    CASE(4)
                        LCLICK(350,390)
                    CASE(5)
                        LCLICK(475,390)
                    CASE(6)
                        LCLICK(600,390)
                    CASE(7)
                        LCLICK(350,455)
                    CASE(8)
                        LCLICK(475,455)
                    CASE(9)
                        LCLICK(600,455)
                    END_SWITCH
                END_CYC
                WAITMS(100)
                LCLICK(480,520) // отправить
                WAITMS(300)
                $cap4a = 100 // после ввода выходим из цикла
            END_IF
            IF(($response = 2) | ($response = 0))
                LOGWRITE ("НЕ распознано. Ошибка!")
                WAITMS(300)
            END_IF
        END_IF
    END_CYC
    IF($cap4a < 100)
        LOGWRITE ("Всё пропало, шеф! Ничего не получилось.")
        HALT
    END_IF
END_SUB
[/spoiler]

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #25 on: August 28, 2017, 11:03:52 PM »
Типа так?
БИНГО-О-О-О!!!
А Clickermann видит это так:
Code: (clickermann) [Select]
#name "WOF"
WAIT(1)

// Область снимка капчи
$x1 = 285
$y1 = 160
$x2 = 675
$y2 = 280


SUB(cap4a)
   FOR($cap4a=0, $cap4a < 3) // цикл распознавания капчи
      GETSCREEN(450,430, 490,470)
      COLORMODE(6, 450,430, 490,470)
      IF_PICTURE_IN (450,430, 490,470, "texture\K.bmp", -1, 70) // Капча нашлась
         TFCLEAR("out.txt")
         WAITMS(50)
         TFWRITE("out.txt", "0")
         waitms(200)
         
         // последовательное задание координат
         PostMessage($hwnd, 0x555, 1, $x1)
         PostMessage($hwnd, 0x555, 2, $y1)
         PostMessage($hwnd, 0x555, 3, $x2)
         PostMessage($hwnd, 0x555, 4, $y2)
         PostMessage($hwnd, 0x555, 5, 0) // распознать
         waitms(200)
         $response = 0
         
         $time_cap4a = $_time_t + 60  // ограничение 60 сек на ответ
         WHILE(($response = 0) & ($time_cap4a < $_time_t))
            $response = TFREAD("out.txt", 1)
            WAITMS(500)
         END_CYC
         
         IF($response = 1)
            $str = TFREAD("out.txt", 2)
            LOGWRITE("Распознано. Ответ: ", $str)
            FOR($step=1, $step < 4)
               $click = STRCUT($str, $step, 1)
               WAITMS(100)
               SWITCH($click)
               CASE(1)
                  LCLICK(350,330)
               CASE(2)
                  LCLICK(475,330)
               CASE(3)
                  LCLICK(600,330)
               CASE(4)
                  LCLICK(350,390)
               CASE(5)
                  LCLICK(475,390)
               CASE(6)
                  LCLICK(600,390)
               CASE(7)
                  LCLICK(350,455)
               CASE(8)
                  LCLICK(475,455)
               CASE(9)
                  LCLICK(600,455)
               END_SWITCH
            END_CYC
            WAITMS(100)
            LCLICK(480,520) // отправить
            WAITMS(300)
            $cap4a = 100 // после ввода выходим из цикла
         END_IF
         IF(($response = 2) | ($response = 0))
            LOGWRITE ("НЕ распознано. Ошибка!")
            WAITMS(300)
         END_IF
      END_IF
   END_CYC
   IF($cap4a < 100)
      LOGWRITE ("Всё пропало, шеф! Ничего не получилось.")
      HALT
   END_IF
END_SUB
wndpos( wndfind("NoxPlayer"), 0, 0)

IF( wndfind("AGClient v1.5"))
   WAITMS(100)
ELSE
   execute("AGClient.exe")
   WAITMS(300)
   wndpos( wndfind("AGClient v1.5"), 1000, 219)
   WAITMS(100)
   LCLICK(1122,314)
END_IF

$hwnd = wndFind("AGClient v1.5") // находим окно
LOGWRITE ("AGClient hwnd: ", $hwnd)
cap4a()
« Last Edit: August 28, 2017, 11:07:05 PM by open_78 »

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #26 on: August 28, 2017, 11:10:25 PM »
Типа так?
БИНГО-О-О-О!!!
Та же шляпа
22:49:16 AGClient hwnd: 0
22:49:20 Всё пропало, шеф! Ничего не получилось
До того как винт добавил цикл фор все работало но не было остановки скрипта если капча зависла. Мне кажется проблема кроется где то тут:

Code: (clickermann) [Select]
WAIT(1)
$hwnd = wndFind("AGClient v1.5") // находим окно
LOGWRITE ("AGClient hwnd: ", $hwnd)
 
// Область снимка капчи
$x1 = 285
$y1 = 160
$x2 = 675
$y2 = 280

Code: (clickermann) [Select]
FOR($cap4a=0, $cap4a < 3) // цикл распознавания капчи
   
Code: (clickermann) [Select]
IF($cap4a < 100)
        LOGWRITE ("Всё пропало, шеф! Ничего не получилось.")
        HALT
    END_IF

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #27 on: August 28, 2017, 11:16:28 PM »
22:49:16 AGClient hwnd: 0
22:49:20 Всё пропало, шеф! Ничего не получилось
Ты это скопировал из прошлого поста(время то-же)? >:( Ключевая строчка эта: AGClient hwnd: 0 Значит программа не видит окно AGClient`а.

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #28 on: August 28, 2017, 11:18:02 PM »
Как работает инклюд я уже понял Винт норм объяснил, вот только проблема в другом.
Вот то что у меня было и работает норм. Просто сюда нужно добавить цикл что бы после того как капча зависла через 5 попыток скрипт остановился.
Code: (clickermann) [Select]
sub(cap4a)
   GETSCREEN(450,430, 490,470)
   COLORMODE(6, 450,430, 490,470)
   IF_PICTURE_IN (450,430, 490,470, "texture\K.bmp", -1, 70) // Капча нашлась
      $cap4a = 1
      WHILE($cap4a = 1) // цикл распознавания капчи
         // Область снимка капчи
         $x1 = 285
         $y1 = 160
         $x2 = 675
         $y2 = 280
         
         WAIT(1)
         $hwnd = wndFind("AGClient v1.5") // находим окно
         LOGWRITE ("AGClient hwnd: ", $hwnd)
         
         TFCLEAR("out.txt")
         WAITMS(50)
         TFWRITE("out.txt", "0")
         waitms(200)
         
         // последовательное задание координат
         PostMessage($hwnd, 0x555, 1, $x1)
         PostMessage($hwnd, 0x555, 2, $y1)
         PostMessage($hwnd, 0x555, 3, $x2)
         PostMessage($hwnd, 0x555, 4, $y2)
         PostMessage($hwnd, 0x555, 5, 0) // распознать
         waitms(200)
         $response = 0
         
         WHILE($response = 0)
            $response = TFREAD("out.txt", 1)
            WAITMS(500)
         END_CYC
         
         IF ($response = 1)
            $str = TFREAD("out.txt", 2)
            LOGWRITE ("Распознано. Ответ: ", $str)
            FOR($step=1,$step<4)
               $click=STRCUT($str,$step,1)
               WAITMS(100)
               SWITCH($click)
               CASE(1)
                  LCLICK(350,330)
               CASE(2)
                  LCLICK(475,330)
               CASE(3)
                  LCLICK(600,330)
               CASE(4)
                  LCLICK(350,390)
               CASE(5)
                  LCLICK(475,390)
               CASE(6)
                  LCLICK(600,390)
               CASE(7)
                  LCLICK(350,455)
               CASE(8)
                  LCLICK(475,455)
               CASE(9)
                  LCLICK(600,455)
               END_SWITCH
            END_CYC
            WAITMS(100)
            LCLICK(480,520) // отправить
            WAITMS(300)
            $cap4a = 0 // после ввода выходим из цикла
         END_IF
         IF ($response = 2)
            LOGWRITE ("НЕ распознано. Ошибка!")
            WAITMS(300)
         END_IF
      END_CYC
   END_IF
end_sub

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Подпрограмма помогите не доходит
« Reply #29 on: August 28, 2017, 11:20:03 PM »
22:49:16 AGClient hwnd: 0
22:49:20 Всё пропало, шеф! Ничего не получилось
Ты это скопировал из прошлого поста(время то-же)? >:( Ключевая строчка эта: AGClient hwnd: 0 Значит программа не видит окно AGClient`а.
Да скопировал просто не стал в лог лезть.