Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - SimplY

Pages: [1] 2 3 ... 9
1
Доброго времени суток!))

Помогите найти проблему и подскажите, почему так происходит?

В общем, кликер ищет картинку. Если картинка найдена, то кликер кликает по ней и затем снова ищет эту же картинку и так до бесконечности. Допукается задержка 1 секунда после клика и перед новым поиском. Если нажата клавиша CTRL, то поиск картинки прекращается и скрипт продолжается.

Написал такой код для этого
Code: (clickermann) [Select]
tel:
      $check = 0
      WHILE($check = 0)
         GETSCREEN(838,578,1706,1023)
         IF_PICTURE_IN (838,578,1706,1023, "телмоб.bmp", -1, 80)
            $check = 1
            WAITMS(50)
            $WNDF = WNDFIND("Связь с телефоном")
            WAITMS(50)
            WNDPOS($WNDF,135,190)
            WAITMS(10)
            WNDSIZE($WNDF,1408,844)
            WAITMS(50)
            LCLICK($_return1+12, $_return2+12)
            WAITMS(300)
            LCLICK(1425,201)  // Закрыть телефон
            WAITMS(300)
            GOTO(tel)
         ELSE
            WAITMS(50)
         END_IF
         IF(ISKEYDOWN(#CTRL)=1)
            $check = 1
            WHILE(ISKEYDOWN(#CTRL)=1)
               WAITMS(50)
            END_CYC
         END_IF
      END_CYC
      // Продолжение скрипта
и вроде бы он работает, но если нажать CTRL c 10 раза. Причем кол-во нажатий для продолжения скрипта рандомное. Может через 2 раза, может через 20 раз. Почему это происходит? Как это убрать? Нужно, чтобы достаточно 1 раза было.

2
Общие вопросы / Re: Подскажите 2ой кликер
« on: September 29, 2023, 08:35:33 AM »
Такой вопрос, моно ли как то использовать одновременно 2 кликера (что бы использовать 2 различных скрипта) или 2 скрипта в одном кликере не меняя их через загрузку сценария?

3 варианта:

1) Использование 2-х кликеров:
Для этого просто копируется папка с кликером и в другом кликере меняются настройки горячих клавиш. Например: В первом запуск Alt+A, а в другом Alt+Z.


2) В одном скрипте несколько скриптов, каждый из которых запускается своей клавишей:

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   IF(ISKEYDOWN(#CTRL)=1)
      WHILE(ISKEYDOWN(#CTRL)=1)
      END_CYC
      $check = 1
   ELSE
      IF(ISKEYDOWN(#ALT)=1)
         WHILE(ISKEYDOWN(#ALT)=1)
         END_CYC
         $check = 2
      ELSE
         IF(ISKEYDOWN(04)=1)
            WHILE(ISKEYDOWN(04)=1)
            END_CYC
            $check = 3
         ELSE
            WAITMS(20)
         END_IF
      END_IF
   END_IF
END_CYC

IF($check = 1) // Если нажата CTRL
   // Первый скрипт
LOGWRITE ("1")
END_IF

IF($check = 2) // Если нажата ALT
   // Второй скрипт
LOGWRITE ("2")
END_IF

IF($check = 3) // Если нажата средняя клавиша мыши
   // Третий скрипт
LOGWRITE ("3")
END_IF


3) В одном скрипте несколько скриптов, каждый из которых запускается своей горячей комбинаций клавиш:
Ребята на форуме подсказали интересный скрипт.
Code: (clickermann) [Select]
THREAD(th1, 0)
    //сюда ставишь первый сценарий
    LOGWRITE("Сценарий 1 завершился")
    $status1 = 0
    SETTHREAD(th1, 2) // сценарий останавливается после прохода
END_THREAD
 
THREAD(th2, 0)
    //сюда ставишь второй сценарий
    LOGWRITE("Сценарий 2 завершился")
    $status2 = 0
    SETTHREAD(th2, 2)
END_THREAD
 
THREAD(th3, 0)
    //сюда ставишь третий сценарий
    LOGWRITE("Сценарий 3 завершился")
    $status3 = 0
    SETTHREAD(th3, 2)
END_THREAD
 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#Z))
    $status1 = $status1 ^ 1
    IF($status1)
        SETTHREAD(th1, 1)
        LOGWRITE("Сценарий 1 запущен")
    ELSE
        SETTHREAD(th1, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 1 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#Z))
        WAITMS(10)
    END_CYC
END_IF
 
IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#A))
    $status2 = $status2 ^ 1
    IF($status2)
        SETTHREAD(th2, 1)
        LOGWRITE("Сценарий 2 запущен")
    ELSE
        SETTHREAD(th2, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 2 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#A))
        WAITMS(10)
    END_CYC
END_IF
 
IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#2))
    $status3 = $status3 ^ 1
    IF($status3)
        SETTHREAD(th3, 1)
        LOGWRITE("Сценарий 3 запущен")
    ELSE
        SETTHREAD(th3, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 3 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#2))
        WAITMS(10)
    END_CYC
END_IF

Но в двух последних вариантах кликер изначально должен быть запущен.

3
В общем, переменная $var может содержать любую из всех заглавных букв алфавита, а может не содержать. Соответственно, если содержит, то $s = Есть, иначе Нет
но это 33 условия. А если будет не 33 значения, а например, 500?
А 500 откуда? Ты либо решаешь конкретную задачу или изучаешь составление условий и задача просто один из примеров.

Если конкретная задача, то никаких 33 условия не нужно, и 33 части условия тоже не нужно.
Для версии Clickermann v4.14:
Code: (clickermann) [Select]
IF((CODE($var) >= 1040) & (CODE($var) <= 1071))
    $s = "Есть"
ELSE
    $s = "Нет"
END_IF

print($s)
HALT

Для всех версий начиная с 4.4.0:
Code: (clickermann) [Select]
$fvar = STRFILTER($var, "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ", 1)
IF($fvar != "")
    $s = "Есть"
ELSE
    $s = "Нет"
END_IF

print($s)
HALT
Эта версия выдаст "Есть" если в строке есть хоть одна заглавная русская буква, даже если букв в переменной много.

Конкретная задача в том, чтобы с сайта выделять данные и по выделенным текстам кликер мог отличить, где наименование компании, где контакты, а в контактах где имя, где номер, где email и сайт.

Почту отличить легко по наличию @

Наличие английских букв, но нет @, значит сайт

Наименование компании начинается всегда с "ООО", "ИП", "АО" и их не так и много.

Если нет, но текст начинается с заглавной буквы, то имя.

Поэтому и задал вопрос. Как буквы отличить или начало типа ИП, ООО. Но с ИП и ООО можно условиями сделать, так как форм собственности не так уж и много. Встречается 3 всего у меня.

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

Затем вся инфа вставляется в форму. Но с этим вроде понятно, как делать.

4
Нашел одну из тем

Может быть так можно?

Code: (clickermann) [Select]
IF(($var = "А") | ($var = "Б") | ($var = "В"))
   $s = "Есть"
ELSE
   $s = "Нет"
 END_IF
Написал этот скриптик со смартфона, поэтому проверить на ПК сегодня не могу.

Знак & означает: а также
Знак ! означает: всё, кроме
Знак | и означает: или

Верно? Где по условиям можно почитать информацию?

Это серьёзно? Ты всё это время не использовал условия?

А где же почитать, где почитать... Может в справке раздел "введение", да  нет, ерунда какая-то.

Я постоянно использовал условия, но только если одно равно или больше, меньше другого.

5
Нашел одну из тем

Может быть так можно?

Code: (clickermann) [Select]
IF(($var = "А") | ($var = "Б") | ($var = "В"))
   $s = "Есть"
ELSE
   $s = "Нет"
 END_IF
Написал этот скриптик со смартфона, поэтому проверить на ПК сегодня не могу.

Знак & означает: а также
Знак ! означает: всё, кроме
Знак | и означает: или

Верно? Где по условиям можно почитать информацию?

6
Общие вопросы / ИЛИ в условии как сделать?
« on: September 22, 2023, 12:53:16 PM »
Ну никак не могу найти в справках.

В общем, переменная $var может содержать любую из всех заглавных букв алфавита, а может не содержать. Соответственно, если содержит, то $s = Есть, иначе Нет

Можно конечно решить вопрос так:
Code: (clickermann) [Select]
IF($var = "А")
   $s = "Есть"
ELSE
   IF($var = "Б")
      $s = "Есть"
   ELSE
      IF($var = "В")
         $s = "Есть"
      ELSE
         $s = "Нет"
      END_IF
   END_IF
END_IF
но это 33 условия. А если будет не 33 значения, а например, 500?

Как решить данную дилемму?

И может ли помочь здесь "!" ?
Помогите пожалуйста найти справку по условиям. Я знаю только = > <

Заранее спасибо!

7
Как создать папку на ПК в указанном пути, чтобы ее название соответствовало значению переменной и если там пробел, то пробел и оставался?
Например,
Code: (clickermann) [Select]
$d = "Молочная сказка"
Взять название в кавычки
Code: (clickermann) [Select]
$d = "Молочная сказка"
EXECUTE("cmd.exe", STRCONCAT(" /C md ", CHAR(34), $d, CHAR(34)))

Получилось решить вопрос через Молочная_сказка. Но тогда со стороны руководства могут быть вопросы и подозрения, что здесь что-то не так.
Вопросы руководства по имени папки? Я и в быту часто создаю с нижним подчёркиванием, меня сразу уволят?  ;D
Это так. Просто удивило.

В идеале нужно, чтобы была возможность найти, есть ли с таким названием папка в указанном пути и если нет, то создать.
Это не нужно. Ничего не случится если создавать заново.

Получилось! Спасибо!!!

8
Всем привет!
Очень много обращался за помощью и решил поделиться своей разработкой)

Суть в том, что очень часто использую клики по координатам от картинки. Например, от левого верхнего угла окна, чтобы где бы окно не было, кликер кликал правильно по окну.

Записывать все эти координаты и потом из вторых вычитать первые неудобно, поэтому и написал небольшой скрипт.

Code: (clickermann) [Select]
#name "Линейка"
WAIT(1)
$sx1 = $_xmouse
$sy1 = $_ymouse
skip:
$check = 0
WHILE($check = 0)
   IF(ISKEYDOWN(#CTRL)=1)
      WHILE(ISKEYDOWN(#CTRL)=1)
      END_CYC
      $check = 1
   ELSE
      IF(ISKEYDOWN(#ALT)=1)
         WHILE(ISKEYDOWN(#ALT)=1)
         END_CYC
         $check = 2
      ELSE
         WAITMS(20)
      END_IF
   END_IF
END_CYC
IF($check = 1)
   $sx2 = $_xmouse
   $sy2 = $_ymouse
   $koorX = $sx2-$sx1
   $koorY = $sy2-$sy1
   IF($koorX > 0)
      $w = "+"
   ELSE
      $w = "-"
   END_IF
   IF($koorY > 0)
      $j = "+"
   ELSE
      $j = ""
   END_IF 
   $code = STRCONCAT("LCLICK($_return1", $w, $koorX, ", ", "$_return2", $j, $koorY, ")")
   LOGWRITE ($code)
   GOTO(skip)
END_IF
IF($check = 2)
   HALT
END_IF

Сначала ставится курсор на верхний, левый угол картинки (можно заменить функцией GETSCREEN), затем запускается скрипт и ставится курсор куда нужно кликать от картинки, затем нажимается клавиша Ctrl и в логи записывается готовая строка для скрипта, которая вставляется в GETSCREEN. Затем можно поставить курсор в другое место и снова Ctrl и так, пока не будут записаны все нужные Вам координаты. Нажатие клавиши ALT останавливает скрипт.

9
Добрый день!
Не могу найти, как решить проблему:(

Как создать папку на ПК в указанном пути, чтобы ее название соответствовало значению переменной и если там пробел, то пробел и оставался?
Например,
Code: (clickermann) [Select]
$d = "Молочная сказка"Получилось решить вопрос через Молочная_сказка. Но тогда со стороны руководства могут быть вопросы и подозрения, что здесь что-то не так. Возможно ли создавать папки именно с названием "Молочная сказка"?

В идеале нужно, чтобы была возможность найти, есть ли с таким названием папка в указанном пути и если нет, то создать.

Буду благодарен за код или ссылки, где можно это изучить, сам не нашел(

Есть тема http://www.crapware.aidf.org/forum/index.php?topic=1994.0
Но там ничего не написано про пробелы и у меня комп х64, я не могу скачать новую версию. Сижу с 4.13

10
Если вручную делать команды горячих клавиш или нажимать клавиши, то всё работает без проблем. Если эти же действия производит кликерманн, то клавиатура не нажимается.
Кликер запускать от администратора.
Нажатия клавиатуры передаются активному окну. Окно сделано активным в коде? Вот перед указанным кодом есть ещё код и какие действия там происходят?


Нажать пальцем на клавиатуре например Ctrl + A и воспроизведение кликером этой же команды:
Code: (clickermann) [Select]
WAITMS (250)
KEYDOWN (#CTRL)
WAITMS (250)
KEYPRESS (#A)
KEYUP (#CTRL)
WAITMS (250)
это разные вещи?
Для большинства программ одно и то же. Есть очень-очень мало программ, которые сознательно не обрабатывают WinApi сообщения и сами обрабатывают клавиатуру. Ни RDP ни 1С к ним не относятся. Всё прекрасно работает.
Code: (clickermann) [Select]
LCLICK(383,553) // Активируем окно 1С после запуска скрипта
WAITMS(500)

KEYDOWN(#CTRL)
WAITMS(30)
KEYPRESS(#A)
WAITMS(50)
KEYUP(#CTRL)
WAITMS(30)

HALT

Да, есть большой скрипт. Для теста создал этот.
Code: (clickermann) [Select]
LCLICK(815,700)  // 16777215
WAITMS(500)
KEYDOWN (#CTRL)
WAITMS (250)
KEYPRESS (#A)
WAITMS (250)
KEYUP (#CTRL)
WAITMS (250)
HALT
Запустил кликер от имени администратора. Он кликает в поле с текстом, должен выделить всё. На практике он кликает в поле с текстом и дальше ничего не происходит:(

11
Добрый день:)

Странная ситуация! Если вручную делать команды горячих клавиш или нажимать клавиши, то всё работает без проблем. Если эти же действия производит кликерманн, то клавиатура не нажимается. Зато нормально работает мышь и видит картинки. Благо в 1С есть кнопки копировать и вставить, куда кликер кликает, но этого мало.

Нажать пальцем на клавиатуре например Ctrl + A и воспроизведение кликером этой же команды:
Code: (clickermann) [Select]
WAITMS (250)
KEYDOWN (#CTRL)
WAITMS (250)
KEYPRESS (#A)
KEYUP (#CTRL)
WAITMS (250)
это разные вещи?

12
Добрый день!
Ломаю голову и не могу разобраться!

Пока открыто окно с картинкой, есть возможность нажать на ALT и продолжить скрипт. Если окно с картинкой закрывается, то скрипт завершает свою работу HALT.

Code: (clickermann) [Select]
WHILE($check = 1)
   GETSCREEN (6,150,1843,945)
   IF_PICTURE_IN (6,150,1843,945, "событие.bmp", -1, 60)
      $check = 1
      IF(ISKEYDOWN(#ALT) = 1)
         $check = 0
         WAITMS(320)
         LOGWRITE ("Даааааааааааа!")
         WAITMS(20)
         HALT
         WHILE(ISKEYDOWN(#ALT) = 1)
            WAITMS(20)
         END_CYC
      END_IF
      WAITMS(20)
   END_IF
END_CYC

Буду благодарен не только за скрипт с решением проблемы, но и разъяснением, что к чему, чтобы я сам разобрался и понял.

13
Всем привет!

В общем, посоветуйте ресурс, который будет читать функция HTTPGET, чтобы я указывал на том ресурсе число и значение переменной $h в скрипте = этому числу.

Мне нужно управлять скриптом удаленно, а точнее значением переменной $h. Посоветуете?

Я вижу этот ресурс так: это какой-то сайт, где можно создать новую страничку с поддоменом, эта страничка пуста и содержит только то, что было указано мной. Например, число 18 и соответственно значение переменной $h при запуске скрипта = 18. Ну как у вас на сайте http://crapware.aidf.org/version/clickermann.php страничка, где указана только версия кликера. Только вместо версии кликера мной выбранное число.

Как всегда буду вам благодарен:)

14
Всем привет:)

Скрипт кликермана по запуску делает скрин экрана и сохраняет в нужную папку.

За компом следят с помощью сторонних программ. Могут ли определить не факт использования кликермана, а то что этот кликерманн делает скриншоты?

15
Code: (clickermann) [Select]
#name "Создать Отчёт с датой"
#autorun
#logfile "Log.txt"
TFWRITE(STRCONCAT("Отчёт от ",$_date_str,".txt"),"")
HALT(1)
Спасибо))))

Pages: [1] 2 3 ... 9