Тема: Ошибка при вызове функции: POP() (Прочитано 1535 раз)
0 Пользователей и 1 Гость просматривают эту тему.
$HWnd = 0
while($HWnd = 0)
$HWnd = WNDFIND(«Everve | Социальное продвижение 80-го уровня — Mozilla Firefox»)
waitms(500)
end_cyc
WNDSIZE ($HWnd, 1150, 800)
waitms(250)
WndPos ($HWnd, 0, 0)
waitms(250)
WNDGETINFO ($HWnd, $var1, $var2, $var3, $var4)
print($var3)
print($var4)
print(«Номер вікна — «, $HWnd)
$HSET ($HWnd,1)
Sait:
wait(10)
GETSCREEN ($HWnd)
print(«Сторінка перегляду сайтів «)
IF_PICTURE_IN (700, 450, 1100,800, «sait.bmp»)
move ($_return1, $_return2)
wait(5)
lclick($_return1, $_return2)
print(«Перегдял сайту»)
Wait(3)
$check = 0
WHILE($check = 0)
GETSCREEN ($HWnd)
IF_PICTURE_IN (400, 450, 750, 610, «goo.bmp»)
$check = 1
move ($_return1, $_return2)
print («Вихід»)
LCLICK($_return1, $_return2)
GOTO(Sait)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_IF
END_CYC
Выскакивает такая ошибка при вмполнении сценария:
«Ошибка при вызове функции: POP()»
Подскажите в чем я напортачил.
Записан
Потому что ошибки. Если это весь скрипт, то так скорее всего правильно. Если нет, то прокомментируй свой задуманный алгоритм, поправлю.
while($HWnd = 0)
$HWnd = WNDFIND("Everve | Социальное продвижение 80-го уровня - Mozilla Firefox")
waitms(500)
end_cyc
WNDSIZE ($HWnd, 1150, 800)
waitms(250)
WndPos ($HWnd, 0, 0)
waitms(250)
WNDGETINFO ($HWnd, $var1, $var2, $var3, $var4)
print($var3)
print($var4)
print("Номер вікна - ", $HWnd)
$HSET ($HWnd,1)
wait(10)
WHILE(1)
print("Сторінка перегляду сайтів ")
GETSCREEN
IF_PICTURE_IN (700, 450, 1100,800, "sait.bmp")
move ($_return1, $_return2)
wait(5)
lclick($_return1, $_return2)
print("Перегдял сайту")
Wait(3)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PICTURE_IN (400, 450, 750, 610, "goo.bmp")
$check = 1
move ($_return1, $_return2)
print ("Вихід")
LCLICK($_return1, $_return2)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC
END_IF
END_CYC
Записан
Это что такое…?
GETSCREEN ($HWnd)
А это что…?
$HSET ($HWnd,1)
IF_PICTURE_IN (который ищет goo.bmp) почему-то закрывает END_CYC, а цикл WHILE($check = 0) закрывает END_IF…
$HWnd = WNDFIND("Everve | Социальное продвижение 80-го уровня - Mozilla Firefox") // Ищем окно с заданным заголовком
IF($HWnd) // Если такое окно найдено
WNDGETINFO ($HWnd, $var1, $var2, $var3, $var4) // Получаем о нем информацию
IF(($var3 ! 1150) | ($var4 ! 800)) // Если его размеры не соответствуют нужным
WNDSIZE ($HWnd, 1150, 800) // То задаем ему размеры
else // Иначе (если размеры окна соответствуют нужным)
IF(($var1 ! 0) | ($var2 ! 0)) // Проверяем - если координаты окна не соответствуют нужным
WndPos ($HWnd, 0, 0) // То перемещаем его в нужные координаты
else // Иначе (если координаты окна соответствуют нужным)
print("Номер вікна - ", $HWnd)
// До этого момента можешь удалить все свое и поставить этот скрипт
// Дальше я просто не понимаю, что происходит у тебя...
END_IF
END_IF
END_IF
WAITMS(50)
« Последнее редактирование: Февраль 16, 2020, 09:59:24 pm от Hito »
Записан
Я не ду… Потому и не бу…
Sait:
wait(10)
GETSCREEN ($HWnd) делаю снимок нужного окна
print(«Сторінка перегляду сайтів «)
IF_PICTURE_IN (700, 450, 1100,800, «sait.bmp») ищу нужную кнопку
move ($_return1, $_return2)
wait(5)
lclick($_return1, $_return2)
print(«Перегдял сайту»)
Wait(3)
После нажатия открывается новое окно, а в предыдущем запускается таймер до 30с.
Через 30с новое окно закрывается само а в предыдущем появляется нужная кнопка «goo.bmp»
$check = 0
WHILE($check = 0)
GETSCREEN ($HWnd) делаю повторный снимок чтоб поймать кнопку
IF_PICTURE_IN (400, 450, 750, 610, «goo.bmp»)
$check = 1
move ($_return1, $_return2)
print («Вихід»)
LCLICK($_return1, $_return2)
GOTO(Sait)
WAITMS(100)
Дальше нужно все повторить, пока есть кнопка «sait.bmp»
ELSE
WAITMS(50)
END_IF
END_IF
END_CYC
« Последнее редактирование: Февраль 16, 2020, 11:40:20 am от kirihor »
Записан
GETSCREEN ($HWnd) делаю снимок нужного окна
Я может не знаю чего-то…? У нас есть такая функция…? Откуда ты ее взял? Я вот сейчас открыл справку и вот, что в ней написано:
Синтаксис
GETSCREEN ([x1, y1, x2, y2] )
Параметры
x1, y1, x2, y2 - параметры, описывающие область экрана; необязательны
А вот это замечание ни о чем тебе не сказало…?
IF_PICTURE_IN (который ищет goo.bmp) почему-то закрывает END_CYC, а цикл WHILE($check = 0) закрывает END_IF…
Я понимаю, когда человеку нужна помощь, но когда человек полностью игнорит при этом что ему говорят — мне не понятно. Тебе просто нужен готовый скрипт рабочий? Тогда почему бы тебе не написать в биржу труда…?
Записан
Я не ду… Потому и не бу…
Спасибо за помощь. Разобрался
Записан
Перейти к контенту
Макросы формируются на основе команд кликера. Здесь мы постарались собрать все существующие в Кликерман команды. Для более подробного понимания работы команд следует обратиться к их подробному описанию.
Для удобства наименования команд приведены в верхнем регистре, но фактически их можно употреблять в любом регистре, в том числе и в смешанном написании, например, первый символ команды заглавный, остальные – строчные.
Скачать Clickermann
Переменные:
- SETVAR — создание или обновление значения переменной;
- DELVAR — удаление или обнуление значения переменной;
- INC — наращивание значения переменной.
Экран:
- SCREENSHOT — скриншот экрана;
- GETSCREEN — получение снимка.
Работа с мышью:
- LDOWN (X,Y) – зажимает левую кнопку мыши;
- LUP (X,Y) – отпускает левую кнопку;
- RDOWN (X,Y) – зажимаем правую кнопку мыши;
- RUP (X,Y) – отпускаем правую кнопку;
- LCLICK (X,Y) – агрегат LDOWN и LUP;
- RCLICK (X,Y) – агрегат RDOWN и RUP;
- DBLCLICK (X,Y) – агрегат двух LCLICK, двойной щелчок ЛКМ;
- MOVE (X,Y) – перемещает курсор в точку [x,y].
Если указать отрицательное значение (-1,-1), курсор не будет перемещаться. Команда LCLICK (#null, #null) просто заставит мышь осуществлять щелчки.
Клавиатура:
- KEYDOWN — зажимает клавишу клавиатуры;
- KEYUP — отпускает клавишу;
- KEYPRESS — агрегат KEYDOWN и KEYUP, нажимает клавишу;
- KEYSTRING — агрегат KEYPRESS для печати строк. Тут используются числовые десятичные коды клавиш на клавиатуре или их псевдонимы.
Время:
- WAIT – ждать заданное количество секунд до выполнения следующей команды;
- WAITMS – аналог предыдущей команды, но с миллисекундами.
Лог-файл:
- LOGSHOW – отобразить/скрыть окно лога;
- LOGWRITE — вывести в лог текст и переменную;
- LOGCLEAR — очистить окно лога.
Циклы:
- FOR – начало цикла и его условие. Такой цикл обычно используют, когда его нужно выполнить определенное количество раз;
- WHILE – такой цикл используют при соблюдении определенного условия для его выполнения;
- END_CYC – конец цикла.
Условия:
- IF – проверка условия, заданного после оператора в скобках;
- ELSE – команды после этого оператора выполняется, если оператор IF вернул ложь;
- END_IF – конец оператора IF;
- IF_PIXEL_IN – поиск точки на экране;
- IF_PIXEL – анализ точки на экране;
- IF_NOT_PIXEL – проверка, противоположная предыдущей;
- IF_PICTURE_IN(1,1, x, y, xxx.jpg) возвращает координаты найденной картинки xxx.jpg в переменные x, y;
- SWITCH – оператор проверки условий множества значений;
- END_SWITCH – конец оператора SWITCH.
Метки:
- xxx: – в данном случае вместо xxx может стоять любой идентификатор метки;
- GOTO (xxx) – переход к метке xxx.
Подпрограммы:
- SUB – означает начало подпрограммы;
- END_SUB – конец подпрограммы;
- GOSUB – вызов подпрограммы.
Прочее:
- RND – возвращает случайное число.
Не работают клики (нажатия) по LCLICK
- Попробуйте вместо lclick написать последовательность ldown; waitms; lup;
- Попробуйте запустить программу с максимальными правами.
- Попробуйте отключить защитные программы.
- Попробуйте изменить приоритет в настройках ядра на более высокий.
- Попробуйте купить новый компьютер.
Другое приложение тормозит с включенной программой кликера
- Попробуйте изменить приоритет в настройках ядра на боле низкий и включить дополнительную задержку.
Проблема с горячими клавишами кликера
- Выставьте необходимые, примените, перезапустите программу. Возможно после запуска кликера какая то программа переназначила эту комбинацию под себя
Записанный сценарий огромный и состоит из одних move.
- Снимите галочку «записывать движения мыши» в настройках интерпретатора перед записью.
Функции по работе с экраном не работают
- Решение проблемы разобрано здесь.
После запуска clickermann на нее ругается файерволл
- Программа при запуске пытается проверить обновления. Это можно отключить в настройках.
На clickermann ругается антивирус
- Антивирусу может не понравится возможность отслеживания мыши и клавиатуры. Такие же механизмы используют шпионы. Впрочем многие другие функции так же могут ему не понравиться. Либо отключайте антивирус на период работы, либо добавьте программу в список доверенных (если такой есть).
При запуске копии программы, перестают работать горячие клавиши
- Необходимо создать вторую копию папки программы и переназначить для нее горячие клавиши. Тогда они не будут конфликтовать.
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ситуация 1:
Открыли рабочее окно, запустили кликерменн и выбрали сценарий для рабочего окна.
Запускаете кликерменн через редактор (нажимая треугольник) — звук запуска прошел, а действий программы нет, выполнение сценария через некоторое время прекращается.
возможные причины и исправления:
1 Программа кликерменн не определила или не правильно определила рабочее окно. Решение проблемы состоит в том, что необходимо кликнуть ЛКМ на свободном месте в открытом окне и затем запустить программу кликерменн.
2 Программа правильно определила окно, но не смогла найти первый виджет(картинку) на рабочем окне. Эта ситуация возникает, если окно открытого редактора кликерменн закрывает первую рабочую картинку. Решение в перемещении окна редактора в другое место и перезапуск кликерменна. Можно закрыть редактор , кликнуть на свободном месте окна и горячими клавишами запустить кликерменн.
3 Программа кликермен не нашла нужный файл, обычно картинка. Сообщение о сбое находится под всеми активными окнами и сразу обнаружить причину отказа программы не удаётся. Решение — сверните все окна и проверте нет ли подобных сообщений. Создайте нужную для программы картинку(расширение bmp) с помощью любой программы для скриншотов.
Ситуация 2:
Программа запустилась, но выполняется со сбоями и ошибками, так же могут быть признаки ситуации 1
возможные причины и исправления:
1 Главная причина сбоя — одновременная работа сразу двух сценариев кликерменн. Эта ситуация возникает, когда кликерменн переведен в режим невидимки( происходит это случайно) и запущен кликерменн в панели задач. Решение любых сбоев работающих сценариев надо начинать с проверки кликермена «в режиме невидимки». Закрыть кликермен, комбинацией клавиш Ctrl+Alt+Del перейти в окно сценариев windows и «запустить редактор задач», в редакторе задач выбрать «Процессы», найти (если есть) пункт clickermann- кликнуть на нем и «завершить процесс».Вернуться в рабочее окно и запустить кликерменн с нужным сценарием.
2 Причина сбоя в выборе режима исполнения, по умолчанию программа кликерменн стоит в режиме бесконечного цикла, что часто приводит к зависанию компа. Поэтому первое что надо сделать после запуска программы — установить режим исполнения — «одиночное 1» .
И так, для исключения сбоев необходимо строго соблюдать правила:
-никогда не использовать кнопку «свернуть окно»
-после запуска — установить режим исполнения- одиночное
Ситуация 3
Программа работает до определенного места и при клике промахивается:
возможные причины и исправления:
1.проблема промаха часто возникает после команды прокрутка колесика мышки, страница не успевает отобразиться, а скрин уже сделан и программа производит клик — страница как бы убегает от курсора мышки перед кликом.Решение проблемы в простой команде задержка 2-5с. после прокрутки.
2.Промах может возникать,если не верно заданы координаты — проверить для конкретного размера окна, если заданы в относительных координатах(0, x_max,y_max), то перед их заданием всегда ставь INT(