Author Topic: Скрипт подтверждения номера телефона  (Read 2317 times)

0 Members and 1 Guest are viewing this topic.

lev12348

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Господа , есть открытая сеть WI-FI , но для корректной работы нужно подтверждение номера телефона каждые 15 мин.+- , сделал программу , но похоже пере мудрил  :

Code: (clickermann) [Select]
IF ( $f = 0 )
   $f = 1
   
   LOGWRITE ( " START" )
   EXECUTE ( "firefox.exe" )
   
   WAIT (9)
   
   HSET ( WNDFIND ( "Mozilla Firefox", 0 ), 1 )
   
   #logfile
   
   $t=INT(STRCONCAT("0",INIREAD("intersvyaz.ini","time",$td)))
   
END_IF

IF ( $t < $_time_t )
   
   $check = 0  //  0 не найдено, 1 найдено
   WHILE ( $check = 0 )   // ожидание окончания
     
      WNDSTATE ( WNDFIND ("Mozilla Firefox"), 1)
// ЕСЛИ ВДРУГ ИЗМЕНИЛ РАЗМЕР ...
      WNDPOS   ( WNDFIND ("Mozilla Firefox"), 10,10)
      WNDSIZE  ( WNDFIND ("Mozilla Firefox"), 500,480)
     
      WAITMS ( 100 )
     
      GETSCREEN
      // поиск окна для ввода номера
      IF_PICTURE_IN(50,100,$_xmax,$_ymax,"2.bmp",-1,90)
         LCLICK ( $_return1+100, $_return2+5 )
         
         WAITMS ( 100 )
         
         KEYSTRING ( "951xxxxxxx", 10 )
         
         WAITMS ( 100 )
         
         GETSCREEN
         // поиск окна "OK"
         IF_PICTURE_IN(100,200,$_xmax,$_ymax,"3.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+5 )
           
            WAITMS ( 100 )
           
            #include "Вывод даты.cms"
            SUB ( Вывод даты )
            END_SUB
            Вывод даты ( )
           
            $t = $_time_t + 897
            INIWRITE ( "intersvyaz.ini", "time", $t, $td )
// ИСПОЛЬЗУЮ ''Вывод текущей даты в лог.cms''   добавил
// в программу  :

//END_IF
//$td = $th,$tm,$ts," date",$dd,$dm,$dy
//LOGWRITE (" Перезапуск  date: ",$dd,".",$dm,".",$dy)   ...?
         
            WAIT ( 2 )
           
            LCLICK ( $x, $y ) // если не запустился то ... ???
           
            WAIT ( 1 )
           
            WNDSTATE ( WNDFIND ("Mozilla Firefox"), 0 )
           
            WAITMS ( 100 )
           
         END_IF
         
         $check = 1  // если найдено выходим из цикла
         
      ELSE  // если не найдено
         
         GETSCREEN
         // поиск закладки
         COLORMODE ( 6, 100,50, $_xmax,$_ymax )
         IF_PICTURE_IN(100,50, $_xmax,$_ymax,"1.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+3 )
           
            WAIT ( 2 )
           
            $x = $_return1+10
            $y = $_return2+3
           
            LOGWRITE (" END")
           
         END_IF
      END_IF
   END_CYC
END_IF

Как при запуске программы , стирать ini. и log ?
и ещё , бывает , что активация не проходит с первого раза ,
прописал :
            LCLICK ( $x, $y )
возвращается к окну для вставки номера , а что делать дальше не знаю , прописывать опять поиск окна для вставки номера и т д . , как то "не правильно " ... приходится пере запускать в ручную .
« Last Edit: May 13, 2016, 03:09:08 PM by lev12348 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
В строке KEYSTRING ( "951xxxxxxx, 10 ) потерялись закрывающие кавычки.

Code: (clickermann) [Select]
            #include "Вывод даты.cms"
            SUB ( Вывод даты )
            END_SUB
            Вывод даты ( )
Это что за чудо внутри трёх условий и одного цикла?
Все тела подпрограмм (SUB) описываются в корне скрипта. Там же желательно размещать и include, а иногда обязательно.

Стр. 20
Code: (clickermann) [Select]
            .....Интересный синтаксис...

Перепутана вложенность блоков. Они перехлёстываются.
Вот удалил лишнее чтоб была понятна структура.
Code: (clickermann) [Select]
IF ( $f = 0 )
END_IF
IF ( $t < $_time_t )
   WHILE ( $check = 0 )   // ожидание окончания
      IF_PICTURE_IN(50,100,$_xmax,$_ymax,"2.bmp",-1,90)
         IF_PICTURE_IN(100,200,$_xmax,$_ymax,"3.bmp",-1,90)
         END_IF
      END_IF
   ELSE  // если не найдено
      IF_PICTURE_IN(100,50, $_xmax,$_ymax,"1.bmp",-1,90)
      END_IF
   END_IF
END_CYC
END_IF

Как минимум, один END_IF лишний. Не знаю какой. Возможно тот что перед ELSE иначе совсем непонятно что там за чем идёт.
« Last Edit: May 13, 2016, 09:33:57 AM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Для начала исправим ошибки.

Что за $td ? Откуда эта переменная?
Code: (clickermann) [Select]
   $t=INT(STRCONCAT("0",INIREAD("intersvyaz.ini","time",$td)))
Здесь пропущена кавычка
Code: (clickermann) [Select]
KEYSTRING ( "951xxxxxxx", 10 )
Вот тут уже пошел хардкор
Code: (clickermann) [Select]
         GETSCREEN
         // поиск окна "OK"
         IF_PICTURE_IN(100,200,$_xmax,$_ymax,"3.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+5 )
           
            WAITMS ( 100 )
           
            #include "Вывод даты.cms"
            SUB ( Вывод даты )  << Что делает подпрограмма внутри условия ???
            END_SUB
            Вывод даты ( )
           
            $t = $_time_t + 897
            INIWRITE ( "intersvyaz.ini", "time", $t, $td ) // опять $td
            // ИСПОЛЬЗУЮ ''Вывод текущей даты в лог.cms''   добавил :
            .....
         END_IF

Это вообще что? Наша $td наконец то объявилась, а до этого получается к нулю обращались. Только строки так не собирают, нужно использовать STRCONCAT
Code: (clickermann) [Select]
$td = $th,$tm,$ts," date",$dd,$dm,$dy



lev12348

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Получилось  вот так , работает скрипт , что ещё можно исправить , и как при первом запуске затирать INI и LOG .
Code: (clickermann) [Select]
IF ( $f = 0 )
   $f = 1
   
   LOGWRITE ( " START" )
   EXECUTE ( "firefox.exe" )
   
   WAIT (9)
   
   HSET ( WNDFIND ( "Mozilla Firefox", 0 ), 1 )
   
   #logfile
   
   #include "Вывод даты.cms"
   
   SUB ( Вывод даты )
      $td=(STRCONCAT($th,":",$tm,":",$ts," date:",$dd,"."$dm,"."$dy))
      LOGWRITE(" Перезапуск  date: ",$dd,".",$dm,".",$dy)
   END_SUB
   
   $t=INT(STRCONCAT("0",INIREAD("intersvyaz.ini","time",$td)))
   
END_IF

IF ( $t < $_time_t )
   
   $check = 0  //  0 не найдено, 1 найдено
   WHILE ( $check = 0 )   // ожидание окончания
     
      WNDSTATE ( WNDFIND ("Mozilla Firefox"), 1)
      WNDPOS   ( WNDFIND ("Mozilla Firefox"), 10,10)
      WNDSIZE  ( WNDFIND ("Mozilla Firefox"), 500,480)
     
      WAITMS ( 100 )
     
      GETSCREEN
      // поиск окна для ввода номера
      IF_PICTURE_IN(50,100,$_xmax,$_ymax,"2.bmp",-1,90)
         LCLICK ( $_return1+100, $_return2+5 )
         
         WAITMS ( 100 )
         
         KEYSTRING ( "95xxxxxxxx", 10 )
         
         WAITMS ( 100 )
         
         GETSCREEN
         // поиск окна "OK"
         IF_PICTURE_IN(100,200,$_xmax,$_ymax,"3.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+5 )
           
            WAITMS ( 100 )
           
            Вывод даты ( )
           
            $t = $_time_t + 897
            INIWRITE ( "intersvyaz.ini", "time", $t, $td )
           
            WAIT ( 2 )
           
            LCLICK ( $x, $y )
           
            WAIT ( 1 )
           
            WNDSTATE ( WNDFIND ("Mozilla Firefox"), 0 )
           
            WAITMS ( 100 )
           
         END_IF
         
         $check = 1  // если найдено выходим из цикла
         
      ELSE  // если не найдено
         
         GETSCREEN
         // поиск закладки
         COLORMODE ( 6, 100,50, $_xmax,$_ymax )
         IF_PICTURE_IN(100,50, $_xmax,$_ymax,"1.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+3 )
           
            WAIT ( 2 )
           
            $x = $_return1+10
            $y = $_return2+3
           
            LOGWRITE (" END")
           
         END_IF
      END_IF
   END_CYC
END_IF
« Last Edit: May 13, 2016, 06:51:32 PM by lev12348 »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
И снова подпрограмма внутри условия! Подпрограммы можно помещать максимум в потоки, не вочто другое их вкладывать нельзя.

Code: (clickermann) [Select]
#logfile

SUB ( Вывод даты )
   $td=STRCONCAT($th,":",$tm,":",$ts," date:",$dd,"."$dm,"."$dy)
   LOGWRITE(" Перезапуск  date: ",$dd,".",$dm,".",$dy)
END_SUB

IF ( $f = 0 )
   $f = 1
   
   LOGWRITE ( " START" )
   EXECUTE ( "firefox.exe" )
   
   WAIT (9)
   
   HSET ( WNDFIND ( "Mozilla Firefox", 0 ), 1 )
   
   #include "Вывод даты.cms"   
   
   $t=INT(STRCONCAT("0",INIREAD("intersvyaz.ini","time",$td)))
   
END_IF

IF ( $t < $_time_t )
   
   $check = 0  //  0 не найдено, 1 найдено
   WHILE ( $check = 0 )   // ожидание окончания
     
      WNDSTATE ( WNDFIND ("Mozilla Firefox"), 1)
      WNDPOS   ( WNDFIND ("Mozilla Firefox"), 10,10)
      WNDSIZE  ( WNDFIND ("Mozilla Firefox"), 500,480)
     
      WAITMS ( 100 )
     
      GETSCREEN
      // поиск окна для ввода номера
      IF_PICTURE_IN(50,100,$_xmax,$_ymax,"2.bmp",-1,90)
         LCLICK ( $_return1+100, $_return2+5 )
         WAITMS ( 100 )
         
         KEYSTRING ( "95xxxxxxxx", 10 )
         WAITMS ( 100 )
         
         GETSCREEN
         // поиск окна "OK"
         IF_PICTURE_IN(100,200,$_xmax,$_ymax,"3.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+5 )
            WAITMS ( 100 )
           
            Вывод даты ( )
           
            $t = $_time_t + 897
            INIWRITE ( "intersvyaz.ini", "time", $t, $td )           
            WAIT ( 2 )
           
            LCLICK ( $x, $y )             
            WAIT ( 1 )
           
            WNDSTATE ( WNDFIND ("Mozilla Firefox"), 0 )             
            WAITMS ( 100 )
           
         END_IF
         
         $check = 1  // если найдено выходим из цикла
         
      ELSE  // если не найдено
         
         GETSCREEN
         // поиск закладки
         COLORMODE ( 6, 100,50, $_xmax,$_ymax )
         IF_PICTURE_IN(100,50, $_xmax,$_ymax,"1.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+3 )           
            WAIT ( 2 )       
     
            $x = $_return1+10
            $y = $_return2+3
           
            LOGWRITE (" END")
           
         END_IF
      END_IF
   END_CYC
END_IF

WAIT ( 1 ) // задержка для разгрузки процессора


А затереть проще простого.
Code: (clickermann) [Select]
TFCLEAR("input.txt", 0) // 0 стирает содержимое файла, 1 удаляет файл (причем любой)
INI файл придется в ручную удалять, потому как откуда кликер знает, хочешь ли ты начать сначала или продолжить с предыдущего сохраненного времени.

lev12348

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
При запуске скрипта , долбим по закладке пока не выйдет окно с вводом номера , при нажатии ОК , в INI сохраняем время от которого начинаем отсчёт 15 мин +- несколько секунд , скрипт " Вывод даты" использую для нормального просмотра времени в INI .
Зачем при запуске скрипта старый INI , ведь время начнётся после активации номера .
В общем пробовал разобраться с подпрограммой , чтоб время отображала в INI в момент перезапуска "ОК" не получается , а получилось , как вы пишете не правильно Но всё работает как мне надо
Code: (clickermann) [Select]
IF ( $f = 0 )
   $f = 1
   TFCLEAR("log.txt", 0) // 0 стирает содержимое файла, 1 удаляет файл (причем любой)
   TFCLEAR("intersvyaz.ini", 0)
   WAITMS ( 100 )
   LOGWRITE ( " START" )
   EXECUTE ( "firefox.exe" )
   
   WAIT (9)
   
   HSET ( WNDFIND ( "Mozilla Firefox", 0 ), 1 )
   
   #logfile
   
   $t=INT(STRCONCAT("0",INIREAD("intersvyaz.ini","time",$td)))
   
END_IF

IF ( $t < $_time_t )
   
   $check = 0  //  0 не найдено, 1 найдено
   WHILE ( $check = 0 )   // ожидание окончания
     
      WNDSTATE ( WNDFIND ("Mozilla Firefox"), 1)
      WNDPOS   ( WNDFIND ("Mozilla Firefox"), 10,10)
      WNDSIZE  ( WNDFIND ("Mozilla Firefox"), 500,480)
     
      WAITMS ( 100 )
     
      GETSCREEN
      // поиск окна для ввода номера
      IF_PICTURE_IN(50,100,$_xmax,$_ymax,"2.bmp",-1,90)
         LCLICK ( $_return1+100, $_return2+5 )
         
         WAITMS ( 100 )
         
         KEYSTRING ( "9517839500", 10 )
         
         WAITMS ( 100 )
         
         GETSCREEN
         // поиск окна "OK"
         IF_PICTURE_IN(100,200,$_xmax,$_ymax,"3.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+5 )
           
            WAITMS ( 100 )
           
            $t = $_time_t + 898
           
            #include "Вывод даты.cms"
           
            INIWRITE("intersvyaz.ini","time",$t,$td)
           
            WAIT ( 2 )
           
            LCLICK ( $x, $y )
           
            WAIT ( 1 )
           
            WNDSTATE ( WNDFIND ("Mozilla Firefox"), 0 )
           
            WAITMS ( 100 )
           
         END_IF
         
         $check = 1  // если найдено выходим из цикла
         
      ELSE  // если не найдено
         
         GETSCREEN
         // поиск закладки
         COLORMODE ( 6, 100,50, $_xmax,$_ymax )
         IF_PICTURE_IN(100,50, $_xmax,$_ymax,"1.bmp",-1,90)
            LCLICK ( $_return1+10, $_return2+3 )
           
            WAIT ( 2 )
           
            $x = $_return1+10
            $y = $_return2+3
           
            LOGWRITE (" END")
           
         END_IF
      END_IF
   END_CYC
END_IF

WAITMS ( 100 )
В "Вывод даты.cms" добавил :
Code: (clickermann) [Select]

$td=STRCONCAT($th,":",$tm,":",$ts," date:",$dd,"."$dm,"."$dy)

LOGWRITE(" Перезапуск  date: ",$dd,".",$dm,".",$dy)
Вот результат :INI
Code: [Select]
[00:32:03 date:14.05.2016]
time=1463186821
[00:47:09 date:14.05.2016]
time=1463187727
log :
Code: [Select]
0:31:59  END
0:32:03  Перезапуск  date: 14.05.2016
0:47:06  END
0:47:09  Перезапуск  date: 14.05.2016
« Last Edit: May 13, 2016, 11:03:40 PM by lev12348 »