Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: putman on July 18, 2019, 06:34:32 PM

Title: Глюки в работе TOCLIP ().
Post by: putman on July 18, 2019, 06:34:32 PM
Здравствуйте.

Обнаружил глюк в работе TOCLIP ().
Иногда, при отрабатывании функции TOCLIP ("$path), когда в фокусе адресная строка браузера Гугл Хром, в эту самую строку вставляется не содержимое переменной $path, а сама инструкция TOCLIP ("$path). Смог заметить это только на замедленном прокручивании записи работы скрипта.

Соответственно открывается не требуемая мне анкета, а результат поиска гуглом на запрос - TOCLIP ("$path).
С чем это может быть связано и как бороть кроме отслеживания скриптом этого косяка и повторной вставкой корректного адреса анкеты ?

М.б. это поможет, но скрипты (одинаковые) работают на 4-х виртуальных машинах установленных на одном компе.
И странно, что могут 12 часов отработать без вышеописанного сбоя, но потом, подряд глючить после 1-5 минут работы.

Помогите решить.
Title: Re: Глюки в работе TOCLIP ().
Post by: Oraven on July 18, 2019, 07:06:54 PM
Что делает кавычка в в функции?
Code: (clickermann) [Select]
TOCLIP ("$path)
Все что в кавычках воспринимается как строка текста. Если там переменная никаких кавычек быть не должно.
Title: Re: Глюки в работе TOCLIP ().
Post by: putman on July 18, 2019, 07:50:29 PM
Что делает кавычка в в функции?
Code: (clickermann) [Select]
TOCLIP ("$path)
Все что в кавычках воспринимается как строка текста. Если там переменная никаких кавычек быть не должно.
Я ошибся при наборе сообщения на форуме, в скрипте кавычки нет.
И не текст из кавычек выводится в строку браузера, а ! САМА ! инструкция "TOCLIP ($path)".

И периодически всякий мусор оказывается в буфере обмена. Часто предыдущая инфа, несмотря на то, что я по две команды TOCLIP ("") ставлю для его очистки и задержки по 200 мс.

М.б. есть какие то строгие правила для работы с этим буфером ?
То целые страницы в десятки килобайт в буфер без проблем без задержек заходят и выходят, то строка 30 символов не может прописаться, и корректно по Ctrl + C куда нужно вставиться ...

Чтобы не мучатся этим дурацким буфером, может быть как-то можно читать страницу сразу в переменную ? Или в файл, а файл уже парсить кликером ?
Title: Re: Глюки в работе TOCLIP ().
Post by: putman on July 18, 2019, 09:04:27 PM
Порылся в гугле и нашел такйю программу - Wget (https://ru.wikipedia.org/wiki/Wget (https://ru.wikipedia.org/wiki/Wget)).
Как думаете, возможно ли при помощи командной строки управлять из кликера загрузкой страниц в файл ?
А потом кликером из файла уже куда стабильнее будет прочитать данные.
Title: Re: Глюки в работе TOCLIP ().
Post by: Vint on July 18, 2019, 09:06:16 PM
Ошибся три раза?  :o
Может и в коде где нибудь ошибся в одном из мест?
Функция, ну никак не может сама вставится в буфер, если её туда не загнать.
И буфер обмена, такая себе общесистемная низкоприоритетная штука, может очень быстро отрабатывать, а может пипец подвисать. Какие там 200 мс. От загажености и загруженности системы очень зависит. Я обычно ставлю на одном из компов 200, 300 и до 500 мс.
Title: Re: Глюки в работе TOCLIP ().
Post by: putman on July 18, 2019, 09:17:35 PM
Ошибся три раза?  :o
Чтобы повторно не набирать, я её набрал 1 раз и скопировал, т.к. в тексте несколько раз встречается. Отсюда и 3 ошибки.

Курю про Wget качалку файлов, мне кажется при её помощи можно в файл сохранять страницу и потом кликером его читать и парсить. Так надёжнее.
А ТУКЛИП на моём неновом компе, с 4-мя запущенными виртуальными машинами, да ещё и я на основной работаю, возможно и глючит что не успевает нормально отработать.
Title: Re: Глюки в работе TOCLIP ().
Post by: gsukhado on October 28, 2019, 10:52:12 PM
Так понимаю у меня что-то подобное вылазит. То функция TOCLIP отрабатывает на ура, а то вдруг "вспоминает" что-то непонятно откуда и вводит совсем не то что надо...

Вот кусочек кода входа в аккаунт:
Code: (clickermann) [Select]

        print("..вход в акк: теперь вводим логин-пароль для ФБ, логин ", $login_social_net)
         waitms(600+rnd(0,150))
       
         TOCLIP("")  // очистка буфера
         WAITMS(350)
         TOCLIP($login_social_net)
         WAITMS(150)
         KEYDOWN (#CTRL)
         WAITMS (50)
         KEYDOWN (#V)
         WAITMS (50)
         KEYUP (#V)
         KEYUP (#CTRL)
         WAIT(1)

а в итоге например сейчас получил вот такой результат: (см скрин), т.е. не логин вставился, а то что я до этого копировал... и даже буфер не очистился... :(
Как с этим бороться? WAITMS до и после TOCLIP супер-большими ставить? или еще как-то?
Title: Re: Глюки в работе TOCLIP ().
Post by: dramster on October 28, 2019, 11:23:19 PM
Тоже кагдато замечал глюки с буфером обмена, скорее всего это изза глюков пк проскакивают обновления буфера. Попробуй в место очистки писать в буфер число, к примеру "0", и пока этот ноль не появится в нем, повторяем запись. Далее пишем то что нам требуется и проверяем не остался ли там ноль.

Навскидку набросал код, ранее до этого не догадывался и не тестил, попробуй.
Code: (clickermann) [Select]
TOCLIP(0)
WHILE(FROMCLIP () ! 0)  //проверяем пока в буфер не запишется ноль
   TOCLIP(0)
END_CYC

TOCLIP($login_social_net)
WHILE(FROMCLIP () = 0) //проверяем, пока не запишет то что нужно, не ноль
   TOCLIP($login_social_net)
END_CYC


WAITMS(100)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAIT(1)

А можно и пропусить "очистку буфера", к чему она нам.

Code: (clickermann) [Select]
TOCLIP($login_social_net)
WHILE(FROMCLIP () ! $login_social_net) //проверяем, пока не запишет то что нужно.
   TOCLIP($login_social_net)
END_CYC


WAITMS(100)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAIT(1)

Но я чтото припоминаю, что частая запись в буфер обмена может привести к ошибке, возможно исправили в новых версиях. Нужно полюбому подкидывать задержки хоть какие, на всякий случай.

Title: Re: Глюки в работе TOCLIP ().
Post by: gsukhado on October 29, 2019, 12:18:59 AM
Спасибо, протестирую! Пока почитал http://crapware.aidf.org/forum/index.php?topic=2753.0, поставил задержки по несколько секунд (!) - и вроде все заработало...