Author Topic: Скрипт на движение мыши  (Read 5144 times)

0 Members and 1 Guest are viewing this topic.

Gelennn

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Скрипт на движение мыши
« on: December 09, 2019, 10:13:34 PM »
Доброго времени суток!
Раньше имел дело с AHK, но было это давно и не правда. Сейчас потребовался скрипт, вроде бы ничего сложного, но осилить не могу.
Необходимо, чтобы при зажатии F9 осуществлялся сдвиг мыши на 10 пикселей влево и через 100 мск зажималась правая клавиша мыши.
При отпускании F9 скрипт прекращался, соответственно отпускалась ПКМ.
Помогите пожалуйста со скриптом или укажите на что-то похожее, а я дальше сам буду ковырять.
Заранее благодарю!

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Скрипт на движение мыши
« Reply #1 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
« Last Edit: December 09, 2019, 11:19:00 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Скрипт на движение мыши
« Reply #2 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

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Скрипт на движение мыши
« Reply #3 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
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Gelennn

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: Скрипт на движение мыши
« Reply #4 on: December 10, 2019, 10:41:47 AM »
Спасибо неравнодушным.
Потестил на основе более простых вариантов от dramster.
В результате есть зажатие ПКМ, но нет первоначального движения мышью.
Заменил MOVE($_xmouse, $_ymouse + 10) на MOVER(0, 10) из стандартного набора программы и тогда движение появилось, но оно происходит циклически, то есть многократно пока держу зажатой ПКМ с указанными интервалами задержки.
А нужно одно микродвижение и зажатая ПКМ пока держу F9.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Скрипт на движение мыши
« Reply #5 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)
« Last Edit: December 10, 2019, 11:04:49 AM by Vint »


Gelennn

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: Скрипт на движение мыши
« Reply #6 on: December 10, 2019, 11:56:46 AM »
А вот этот вариант заработал. Спасибо.
На самом деле это только базовая часть скрипта. По F9 левое движение и зажим ПКМ,
по F10 правое движение и зажим ПКМ и по F8 нижнее движение и зажим ПКМ.
Но тут вырисовалась другая проблема, которая убивает весь смысл макроса - если я прожимаю
одну из активирующих клавиш(F8,F9,F10) в момент, когда веду мышью физически, защитывается
именно это физическое движение мышью, а не заложенное в скрипте. Например веду вправо и прожимаю
F9. Мне нужно, чтобы защиталось короткое левое движение мыши и зажим ПКМ, а защитывается правое, т.к. в этот
момент я физически его осуществлял. Можно ли это как-то победить. То есть чтобы скриптовое микродвижение мышью
считалось приоритетным над физическим. Задержку между движением мыши и нажатием ПКМ убрал вообще, ничего
не изменилось.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Скрипт на движение мыши
« Reply #7 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. Это миллисекунды, может и доли миллисекунд. Так часто проверку никто не делает, иначе все ресурсы на это уйдут.