6.04 - условия/операторы

История версий. Описание в подробностях некоторых фишек программы. И иногда новости, связанные с AutoClickExtreme.

6.04 - условия/операторы

Сообщение Safonov_Denis » 29 ноя 2011, 01:28

AutoClickExtreme 6.04 - наконец-то сделал условные переходы и операторы. Итак, кликаем ЛКМ на Таблице Действий, заходим в СмартКонтроль, нажимаем кнопку "Условия/Операторы" Изображение

В основном все завязано на переменных. Причем после заведения их в диалоге работы с переменными их удобно вставлять в диалоге работы с условиями с помощью правой клавиши мыши, которая вызывает все доступные переменные. В закомментированном виде уже присутствуют шаблонные условия, операторы. Пройдусь кратко по этим шаблонам:
Код: выделить все
//IF %ClB%==10 THEN GOTO UN=6;
//IF %ClB%=="ACE" THEN GOTO UN=7;
//IF %ClB%==10 THEN GOTO UN=6; ELSE ReplayNode(2);
//IF %ClB%=="Success" THEN %VaR_File=D:\Arch\tmp_.txt:F_% = %DaTe% + " успешно\n";
//IF %sysdate% < TO_DATE("2009.12.24 19:00:15", "YYYY.MM.DD HH24:MI:SS") THEN STOP;
//IF 1==1 THEN ReplayAip("D:\aips\tmp.aip");

Первая строка: если в буфере обмена текст "10", то выполняется оператор идущий после THEN, в качестве оператора сравнения могут быть <, <=, >, >=, ==
В качестве исполняемых операторов могут быть как манипуляции с переменными, так и манипуляции с Воспроизведением. А именно:
GOTO UN=x; - переход на Воспроизведение, начиная с действия с уникальным номером x (НЕ совпадает с номером действия!!!), этот номер можно подсмотреть в свойствах действия, кликнув на нем дважды в Таблице Действий.
ReplayNode(x); - ДОПОЛНИТЕЛЬНОЕ воспроизведение ветви x. После воспроизведения этой ветви Воспроизведение продолжится со следующего действия. Это важно понимать, что GOTO переходит к Воспроизведению в произвольное место скрипта и уже не возвращается на прежнее место, ReplayNode вставляет в текущее место отдельную ветвь Воспроизведения.
STOP; - останавливает Воспроизведение.
ReplayAip("D:\aips\tmp.aip"); - Воспроизведение другой записи, указанной в скобках в кавычках. Воспроизведение НЕ ВОЗВРАЩАЕТСЯ на текущую Запись.

По поводу переменных:
Переменные можно сохранять в файл и считывать оттуда же. (подробнее в документации)
Добавлена новая глобальная переменная %sysdate% - количество секунд со средних веков (не помню точно какого :D ), путем сохранения в файл и загрузки, можно вставлять условия воспроизведения отдельных ветвей раз в 2 часа или любое другое произвольное время. Приблизительно так "IF %sysdate% >= %VaR_next_actual_% THEN ReplayNode(2);" где %VaR_next_actual_% - переменная которая считала из файла время последнего Воспроизведения ветви и прибавила 7200 сек. Очень полезная функция, когда какие-то более важные моменты Записи должны выполняться более регулярно, а какие-то более редко, что значительно уменьшает время работы скрипта.
TO_DATE("2009.12.24 19:00:15", "YYYY.MM.DD HH24:MI:SS") - для более сложных манипулящий со временем предназначена эта функция, нагло подсмотренная мной из PL/SQL.
Важный момент: условий может быть перечислено несколько в диалоге, но при Выполнении оператора, который управляет воспроизведением, все нижеследующие условия игнорируются.

Еще в новой версии сделаны некоторые поправки:
- устранено срабатывание Планировщика при Воспроизведении, что раньше приводило к зависанию программы.
- некоторые баги работы с переменными (все время забываю их записывать, а потом думаю, что ж я исправлял, ведь точно помню что исправлял :? ).
Safonov_Denis
Администратор
 
Сообщений: 663
Зарегистрирован: 09 июн 2011, 23:05
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Petr » 06 дек 2011, 14:13

Денис, подскажите пожалуйста, какое условие нужно ввести для реализации простой задачи:
Допустим есть 10 циклов
В середине каждого цикла осуществляется пиксельный контроль, и если допустим на 6-м цикле нужную картинку он не находит, то считает цикл (6-й) завершенным и дальше идет на 7-й. Т.е. ненайденная картинка приравнивалась к успешному выполнению цикла.
Petr
 
Сообщений: 15
Зарегистрирован: 05 окт 2011, 01:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Safonov_Denis » 09 дек 2011, 13:53

Сделать запись с остановкой Воспроизведения в случае НЕнахождения картинки и поместить такую запись в Плейлист 10 раз. В более профессиональном виде - завести переменную, которая будет увеличиваться при каждом Воспроизведении и при достижении 10 в условиях делать остановку. А в свойствах Пиксельного Контроля поставить в случае НЕнахождения картинки запуск на Воспроизведение этой же Записи. Плейлист в этом случае не нужен
Safonov_Denis
Администратор
 
Сообщений: 663
Зарегистрирован: 09 июн 2011, 23:05
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Petr » 09 дек 2011, 22:09

Подскажите пожалуйста, у меня такая ситуация: постоянно нестабильно работает подключение к интернету. Необходимо чтоб в случае успешного подключения (через VPN), программа продолжала воспроизведение записи, а если не было успешного подключения, то переподключалась заново, пока не подключится. Собственно сам процесс подключения я реализовал через bat файл. Не подскажете, как можно установить отмашку в успешности действия в данном случае?
Petr
 
Сообщений: 15
Зарегистрирован: 05 окт 2011, 01:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Safonov_Denis » 10 дек 2011, 22:14

я в свое время делал с помощью проверки пингов на сервер, проверяя, что они есть. Вы можете сделать так же как в реальном процессе, если выскочило сообщение об обрыве связи или о недоступности страницы, значит при пиксельном контроле этой ситуации программа пытается переконектиться. Более детально не могу рассказать, потому что нужно знать на каком этапе у Вас загвоздка.
Safonov_Denis
Администратор
 
Сообщений: 663
Зарегистрирован: 09 июн 2011, 23:05
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Petr » 14 дек 2011, 21:39

Все равно остается непонятным главный момент.
У меня выполняется запись, состоящая из 100 циклов. Неважно, если несколько из них (циклов) пройдет неудачно, но очень важно время, поэтому крайне важно иметь возможность в случае не нахождения контрольной картинки в пиксельном контроле, считать именно этот цикл завершенным (не вести его до конца и не тратить на это время, для этого данный пиксель контроль и нужен).
Т.е. предположим успешно сделано 30 из 100 циклов от А до Я, на 31м не обнаруживается картинка в условный 30-ти секундный срок, что сигнализирует о том, что дальнейшее воспроизведение не имеет никакого смысла и просто будет впустую тратить время. Мне необходимо, чтобы как только пиксель контроль потерпел неудачу, 31-й цикл считался успешно выполненным и переходил к 32-му. Цель - экономия времени, когда 100% известно от пиксельного контроля, что дальнейшее воспроизведение ДАННОГО цикла не имеет смысла и нужно переходить к следующему.
Petr
 
Сообщений: 15
Зарегистрирован: 05 окт 2011, 01:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Petr » 14 дек 2011, 21:45

К предыдущему сообщению - необходимо добавить на мой взгляд простую штуку: В пиксельный контроль в поле "При отсутствии изображения выполнить" помимо предложенных сделать пункт "перейти к следующему циклу". Был бы беспредельно благодарен за это, предполагал, что в новой версии вместе с if...else она будет реализована, но так и не дождался (или не понял где))
Petr
 
Сообщений: 15
Зарегистрирован: 05 окт 2011, 01:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Safonov_Denis » 15 дек 2011, 10:10

С самого начала я дал правильный ответ:
Safonov_Denis писал(а):Сделать запись с остановкой Воспроизведения в случае НЕнахождения картинки и поместить такую запись в Плейлист 10 раз. В более профессиональном виде - завести переменную, которая будет увеличиваться при каждом Воспроизведении и при достижении 10 в условиях делать остановку. А в свойствах Пиксельного Контроля поставить в случае НЕнахождения картинки запуск на Воспроизведение этой же Записи. Плейлист в этом случае не нужен

В программе и так полно всяких кнопочек и пунктиков, что народ порядочно теряется что и как действует. Поэтому сделайте как я порекомендовал.
Safonov_Denis
Администратор
 
Сообщений: 663
Зарегистрирован: 09 июн 2011, 23:05
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Petr » 15 дек 2011, 16:40

Спасибо за ответ! Не совсем понимаю, нужно сделать, чтобы он переходил к след. циклу без потери времени? Записать пустую запись и указать её в случае НЕнахождения?
Petr
 
Сообщений: 15
Зарегистрирован: 05 окт 2011, 01:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: 6.04 - условия/операторы

Сообщение Safonov_Denis » 15 дек 2011, 17:06

Нет. Указывайте прямо эту же Запись, которую и гоняете. Т.е. AutoClickExtreme фактически будет ее заново запускать.
Safonov_Denis
Администратор
 
Сообщений: 663
Зарегистрирован: 09 июн 2011, 23:05
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Новости (публикация версий)