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

Основной раздел => Общие вопросы => Topic started by: Gelennn on December 09, 2019, 10:13:34 PM

Title: Скрипт на движение мыши
Post by: Gelennn on December 09, 2019, 10:13:34 PM
Доброго времени суток!
Раньше имел дело с AHK, но было это давно и не правда. Сейчас потребовался скрипт, вроде бы ничего сложного, но осилить не могу.
Необходимо, чтобы при зажатии F9 осуществлялся сдвиг мыши на 10 пикселей влево и через 100 мск зажималась правая клавиша мыши.
При отпускании F9 скрипт прекращался, соответственно отпускалась ПКМ.
Помогите пожалуйста со скриптом или укажите на что-то похожее, а я дальше сам буду ковырять.
Заранее благодарю!
Title: Re: Скрипт на движение мыши
Post by: Космич on December 09, 2019, 11:13:25 PM
Code: (clickermann) [Select]
$state_key = ISKEYDOWN(#F9)
SWITCH(POW(2, $state_key) * POW(3, (($state_key = #FALSE) and ($state_mouse = #TRUE))) - 1)
CASE(1)
   MOVE($_xmouse, $_ymouse + 10)
   WAITMS(100)
   RDOWN($_xmouse, $_ymouse)
   $state_mouse = #TRUE
CASE(2)
   RUP($_xmouse, $_ymouse)
   $state_mouse = #FALSE
END_SWITCH
Title: Re: Скрипт на движение мыши
Post by: dramster on December 09, 2019, 11:24:51 PM
Черт подери  :-\ Зачем так все усложнять?  :D

Code: (clickermann) [Select]
if(ISKEYDOWN(#F9))
   MOVE($_xmouse, $_ymouse + 10)
   WAITMS(100)
   RDOWN($_xmouse, $_ymouse)
else
   RUP($_xmouse, $_ymouse)
   WAITMS(100)   
end_if

Но скорее всего правилнее будет так:
Code: (clickermann) [Select]
if(ISKEYDOWN(#F9))
   MOVE($_xmouse, $_ymouse + 10)
   WAITMS(100)
   if(ISKEYDOWN(2)=0)
      RDOWN($_xmouse, $_ymouse)
   end_if
else
   if(ISKEYDOWN(2))
      RUP($_xmouse, $_ymouse)
   end_if
   WAITMS(100)
end_if
Title: Re: Скрипт на движение мыши
Post by: Космич on December 10, 2019, 04:20:18 AM
Чтобы не писать одно и тоже))

Еще можно вот так
Code: (clickermann) [Select]
STRSEPARATE("0;2;3;1", ";", $array_state)
 
WHILE(#TRUE)
   SWITCH($array_state[ISKEYDOWN(#F9) + $state_mouse * 2])
   CASE(1)
      $array_coord[0] = $array_coord[0] - 10
      MOVE($array_coord[0], $array_coord[1])
      WAITMS(100)
   CASE(2)
      STRSEPARATE(STRCONCAT($_xmouse, ";", $_ymouse), ";", $array_coord)
      RDOWN($array_coord[0], $array_coord[1])
      $state_mouse = 1
   CASE(3)
      RUP($array_coord[0], $array_coord[1])
      $state_mouse = 0
   END_SWITCH
END_CYC
Title: Re: Скрипт на движение мыши
Post by: Gelennn on December 10, 2019, 10:41:47 AM
Спасибо неравнодушным.
Потестил на основе более простых вариантов от dramster.
В результате есть зажатие ПКМ, но нет первоначального движения мышью.
Заменил MOVE($_xmouse, $_ymouse + 10) на MOVER(0, 10) из стандартного набора программы и тогда движение появилось, но оно происходит циклически, то есть многократно пока держу зажатой ПКМ с указанными интервалами задержки.
А нужно одно микродвижение и зажатая ПКМ пока держу F9.
Title: Re: Скрипт на движение мыши
Post by: Vint on December 10, 2019, 11:00:27 AM
Code: (clickermann) [Select]
IF(ISKEYDOWN(#F9))
    MOVE($_xmouse - 10, $_ymouse)
    WAITMS(100)
    RDOWN($_xmouse, $_ymouse)
    WHILE(ISKEYDOWN(#F9))
        WAITMS(10)
    END_CYC
    RUP($_xmouse, $_ymouse)
END_IF

Если это весь скрипт что будет, то в конце нужно добавить паузу для разгрузки процессора
WAITMS(20)
Title: Re: Скрипт на движение мыши
Post by: Gelennn on December 10, 2019, 11:56:46 AM
А вот этот вариант заработал. Спасибо.
На самом деле это только базовая часть скрипта. По F9 левое движение и зажим ПКМ,
по F10 правое движение и зажим ПКМ и по F8 нижнее движение и зажим ПКМ.
Но тут вырисовалась другая проблема, которая убивает весь смысл макроса - если я прожимаю
одну из активирующих клавиш(F8,F9,F10) в момент, когда веду мышью физически, защитывается
именно это физическое движение мышью, а не заложенное в скрипте. Например веду вправо и прожимаю
F9. Мне нужно, чтобы защиталось короткое левое движение мыши и зажим ПКМ, а защитывается правое, т.к. в этот
момент я физически его осуществлял. Можно ли это как-то победить. То есть чтобы скриптовое микродвижение мышью
считалось приоритетным над физическим. Задержку между движением мыши и нажатием ПКМ убрал вообще, ничего
не изменилось.
Title: Re: Скрипт на движение мыши
Post by: Vint on December 10, 2019, 12:54:37 PM
Можно на время своих действий блокировать клавиатуру и мышь
http://crapware.aidf.org/forum/index.php?topic=1860.msg11043#msg11043

Но может тебе не это нужно. Тем более в таком виде запуск долгий.

Непонятно как оно там защитывает, потому что движение влево есть, просто оно слишком быстрое и проверка в этот период не успеет зафиксировать. Забивается сменой координат вправо. Т.е. значения X меняются примерно
100-105-107-110-118-108-127-143
Зафиксирует если будет проверка в момент когда X=110-118 и в момент когда = 108. Это миллисекунды, может и доли миллисекунд. Так часто проверку никто не делает, иначе все ресурсы на это уйдут.