Author Topic: Повтор скрипта по нескольким окнам  (Read 2815 times)

0 Members and 1 Guest are viewing this topic.

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Повтор скрипта по нескольким окнам
« on: November 12, 2019, 08:29:19 PM »
Помогите еще с одной задачей, что требуется есть какой то скрип, есть 3 окна с одинаковым содержимым, окна наложены друг на друга, надо пропустить скрипт определенное количество раз по первому окну, закрыть его, повторить тоже самое по второму и так же по третьему. Если еще при запуске возможно ли указать сколько раз пробежатся по кждому окну было бы здорово.
Что то типа этого но не работает понятия не имею как это реализовать.
Code: (clickermann) [Select]
IF($first = 0)
   $first = 1
   $count = INPUTBOX("Кол-во проходов:", "1", 999)
   $count2 = $count + INPUTBOX("Кол-во проходов:", "1", 999)
   $count3 = $count2 + $count + INPUTBOX("Кол-во проходов:", "1", 999)
   IF($count = "")
      HALT
   END_IF
END_IF

// Тут мой скрипт
LOGWRITE ("скрипт")

INC($count,-1)
IF($count = 0)
   LOGWRITE ("закрыть 1 окна")
END_IF

INC($count2,-1)
IF($count = 0)
   LOGWRITE ("закрыть 2 окна")
END_IF

INC($count3,-1)
IF($count = 0)
   LOGWRITE ("закрыть 3 окна")
   halt
END_IF
« Last Edit: November 12, 2019, 09:00:22 PM by Ramzesia »

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Повтор скрипта по нескольким окнам
« Reply #1 on: November 12, 2019, 09:54:12 PM »
Code: (clickermann) [Select]
$arr[0] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))
$arr[1] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))
$arr[2] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))

$i = 0
WHILE($i < 3)
   IF($arr[$i])
      $arr[$i] = $arr[$i] - 1
      LOGWRITE ("закрыть ",  $i + 1, "окна")
   ELSE
      $i = $i + 1
   END_IF
END_CYC

HALT
« Last Edit: November 12, 2019, 09:59:20 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Повтор скрипта по нескольким окнам
« Reply #2 on: November 13, 2019, 12:07:50 AM »
Интересно, сложно, и кажется не то что мне нужно. Я так понимаю он будет при каждом заходе закрывать окно, а мне надо, указать количество проходов, для каждого окна и только потом, нужно закрыть окно. то есть, например мне надо что бы в первом окне скрипт прокрутился  700 раз после этого закрыл окно №1 во втором скажем надо 800 кругов закрыть окно №2 и.т.д
для всех 3х окон, нужны одинаковые действия, отличие только количество проходов. Так как не получается привязать к окну, то решил наложить окна друг на друга и по завершению скрипта закрыть одно проделать со вторым и третьим.

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Повтор скрипта по нескольким окнам
« Reply #3 on: November 13, 2019, 12:59:12 AM »
С логированием вышла маленькая заминочка, но в остальном всё так, как ты хотел. При истинности условия совершаешь какое то действо, а при ложности закрываешь окно.
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Повтор скрипта по нескольким окнам
« Reply #4 on: November 13, 2019, 09:19:43 AM »
Да походу то что нужно спасибо) а можно фокус прикрутить на окно а то, начало скрипта по кликеру идет, до первого клика(
Я правильно понял куда что поставить нужно?
Code: (clickermann) [Select]
$arr[0] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))
$arr[1] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))
$arr[2] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))

$i = 0
WHILE($i < 3)
   IF($arr[$i])
      $arr[$i] = $arr[$i] - 1
      KEYPRESS(#A) // тут какой то скрипт
      LOGWRITE ("выполнение скрипта")
   ELSE
      LCLICK(1266,13) // закрываем окно
      WAITMS(300)
      LCLICK(863,543) // подтвердить закрытие
      WAITMS(300)
      LOGWRITE ("закрыть ",  $i + 1, "окна")
      $i = $i + 1
   END_IF
END_CYC

HALT
« Last Edit: November 13, 2019, 09:21:39 AM by Ramzesia »

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Повтор скрипта по нескольким окнам
« Reply #5 on: November 13, 2019, 03:05:49 PM »
Code: (clickermann) [Select]
#DEFINE WM_SYSCOMMAND: 0x0112 
#DEFINE SC_CLOSE:      0xF060

$arr[0] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))
$arr[1] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))
$arr[2] = 0 + INT(INPUTBOX("Кол-во проходов:", "1", 999))

$i = 0
WHILE($i < 3) 
   SWITCH($state)
   CASE(2) // Тут действия с окном
      LOGWRITE ("Окно №", $i + 1,  "Еще проходов: ", $arr[$i])
      $arr[$i] = $arr[$i] - 1
      KEYPRESS(#A)
      $state = 1 + ($arr[$i] > 0)
   CASE(1)  // Тут завершение работы с окном
      LOGWRITE ("Завершение работы, с ",  $i + 1, " окном")
      SENDMESSAGE($hwnd, WM_SYSCOMMAND, SC_CLOSE, 0) // Закрываем окно
      $i = $i + 1
      $state = 0     
   CASE(0) // Зайдёт по 1 разу перед каждым окном
      $hwnd = HGET(INT($_xmax / 2), INT($_ymax / 2)) // Получение дескриптора окна по координатам
      WNDBUMP($hwnd) // Перевод окна на передний план
      $state = 2
   END_SWITCH
END_CYC
« Last Edit: November 13, 2019, 05:07:12 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Повтор скрипта по нескольким окнам
« Reply #6 on: November 14, 2019, 02:35:01 PM »
Спасибо за потраченное время, но я не смог разобраться в этих строках, я полный нуб в этом. Видно не судьба сделать нормально, пойду лепить 3км строчек.

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Повтор скрипта по нескольким окнам
« Reply #7 on: November 15, 2019, 05:58:33 AM »
Еще раз поковырялся тут, вроде разобрался, теперь возникла необходимость, если окна 2 и 3 нету что бы он работал только по одному окну, на ум приходит следующее
как это прикрутить правильно?
Code: (clickermann) [Select]
IF($arr[1] = "")
   SENDMESSAGE($hwnd, WM_SYSCOMMAND, SC_CLOSE, 0) // или в место этого, ничего не делать, пойти дальше
   IF($arr[2] = "")
      SENDMESSAGE($hwnd, WM_SYSCOMMAND, SC_CLOSE, 0) //  или в место этого, ничего не делать, пойти дальше
   END_IF
END_IFF

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Повтор скрипта по нескольким окнам
« Reply #8 on: November 15, 2019, 04:52:34 PM »
Code: (clickermann) [Select]
#DEFINE WM_SYSCOMMAND: 0x0112
#DEFINE SC_CLOSE:      0xF060

// при отмене - закончить ввод
UNDEFINE($arr)
$count = 0
WHILE($count < 9999)
    $count = INT(INPUTBOX("Кол-во проходов:", "1", 9999))
    IF($count < 9999)
        ARRPUSH($arr, $count)       
    END_IF
END_CYC

$i = 0
WHILE($i < ARRSIZE($arr))
    SWITCH($state)
        CASE(2) // Тут действия с окном
            LOGWRITE ("Окно №", $i + 1,  "Еще проходов: ", $arr[$i])
            $arr[$i] = $arr[$i] - 1
            KEYPRESS(#A)
            $state = 1 + ($arr[$i] > 0)
        CASE(1)  // Тут завершение работы с окном
            LOGWRITE ("Завершение работы, с ",  $i + 1, " окном")
            SENDMESSAGE($hwnd, WM_SYSCOMMAND, SC_CLOSE, 0) // Закрываем окно
            $i = $i + 1
            $state = 0
        CASE(0) // Зайдёт по 1 разу перед каждым окном
            $hwnd = HGET(INT($_xmax / 2), INT($_ymax / 2)) // Получение дескриптора окна по координатам
            WNDBUMP($hwnd) // Перевод окна на передний план
            $state = 2
    END_SWITCH
END_CYC

ответ только на последний вопрос. Что там внутри while не разбирался.