Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Gelennn on December 09, 2019, 10:13:34 PM
-
Доброго времени суток!
Раньше имел дело с AHK, но было это давно и не правда. Сейчас потребовался скрипт, вроде бы ничего сложного, но осилить не могу.
Необходимо, чтобы при зажатии F9 осуществлялся сдвиг мыши на 10 пикселей влево и через 100 мск зажималась правая клавиша мыши.
При отпускании F9 скрипт прекращался, соответственно отпускалась ПКМ.
Помогите пожалуйста со скриптом или укажите на что-то похожее, а я дальше сам буду ковырять.
Заранее благодарю!
-
$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
-
Черт подери :-\ Зачем так все усложнять? :D
if(ISKEYDOWN(#F9))
MOVE($_xmouse, $_ymouse + 10)
WAITMS(100)
RDOWN($_xmouse, $_ymouse)
else
RUP($_xmouse, $_ymouse)
WAITMS(100)
end_if
Но скорее всего правилнее будет так:
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
-
Чтобы не писать одно и тоже))
Еще можно вот так
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
-
Спасибо неравнодушным.
Потестил на основе более простых вариантов от dramster.
В результате есть зажатие ПКМ, но нет первоначального движения мышью.
Заменил MOVE($_xmouse, $_ymouse + 10) на MOVER(0, 10) из стандартного набора программы и тогда движение появилось, но оно происходит циклически, то есть многократно пока держу зажатой ПКМ с указанными интервалами задержки.
А нужно одно микродвижение и зажатая ПКМ пока держу F9.
-
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)
-
А вот этот вариант заработал. Спасибо.
На самом деле это только базовая часть скрипта. По F9 левое движение и зажим ПКМ,
по F10 правое движение и зажим ПКМ и по F8 нижнее движение и зажим ПКМ.
Но тут вырисовалась другая проблема, которая убивает весь смысл макроса - если я прожимаю
одну из активирующих клавиш(F8,F9,F10) в момент, когда веду мышью физически, защитывается
именно это физическое движение мышью, а не заложенное в скрипте. Например веду вправо и прожимаю
F9. Мне нужно, чтобы защиталось короткое левое движение мыши и зажим ПКМ, а защитывается правое, т.к. в этот
момент я физически его осуществлял. Можно ли это как-то победить. То есть чтобы скриптовое микродвижение мышью
считалось приоритетным над физическим. Задержку между движением мыши и нажатием ПКМ убрал вообще, ничего
не изменилось.
-
Можно на время своих действий блокировать клавиатуру и мышь
http://crapware.aidf.org/forum/index.php?topic=1860.msg11043#msg11043
Но может тебе не это нужно. Тем более в таком виде запуск долгий.
Непонятно как оно там защитывает, потому что движение влево есть, просто оно слишком быстрое и проверка в этот период не успеет зафиксировать. Забивается сменой координат вправо. Т.е. значения X меняются примерно
100-105-107-110-118-108-127-143
Зафиксирует если будет проверка в момент когда X=110-118 и в момент когда = 108. Это миллисекунды, может и доли миллисекунд. Так часто проверку никто не делает, иначе все ресурсы на это уйдут.