Что нового

[Мышь, клавиатура] Бесконечный клик ЛКМ с условием

Flammable

Новичок
Сообщения
8
Репутация
0
Требуется скрипт, эмулирующий нажатия ЛКМ с заданным интервалом пока ЛКМ зажата. Т.к я нуб в AutoItX и только начинаю разбираться что к чему, хотел бы узнать от вас, как именно это можно реализовать :smile:
Собственно говоря, что я пытался сделать:

Код:
Global $MOUSE_PRIMARYDOWN_EVENT
Global $MOUSE_PRIMARYUP_EVENT

HotKeySet ("{NUMPAD1}", "ScriptStart")
HotKeySet ("{NUMPAD2}", "ScriptStop")
HotKeySet ("{NUMPAD3}", "ScriptExit")

Func ScriptStart()
	if ($MOUSE_PRIMARYDOWN_EVENT = 1) Then
		While ($MOUSE_PRIMARYUP_EVENT = 0)
		MouseClick("left")
		Sleep(75)
		WEnd
	EndIf
EndFunc

Func ScriptStop()
	Sleep(1000000) 
EndFunc

Func ScriptExit()
	Exit
EndFunc


Жду вашей поддержки =)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Flammable [?]
Требуется скрипт, эмулирующий нажатия ЛКМ с заданным интервалом пока ЛКМ зажата
Дело в том что таким образом мы создаём зацикливание, т.е мы проверяем если кнопка мышки зажата, но в то же время мы скриптом её и нажимаем, цикл никогда не будет завершён.

Нужна более подробная постановка задачи ;)
 
Автор
F

Flammable

Новичок
Сообщения
8
Репутация
0
Хорошо, перефразирую. Нужно сделать "переключение" режима работы мыши, жмем num1 и при зажатой ЛКМ получаем повторяющиеся клики ЛКМ. Это возможно?

Добавлено
-----------

Можно ли отменять захват ЛКМ, а потом включать, чтобы во время отключения эмулировать клик?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Flammable [?]
жмем num1 и при зажатой ЛКМ получаем повторяющиеся клики ЛКМ. Это возможно?
Код:
#include <Misc.au3>

Global $bRuning = False

HotKeySet("{NUMPAD1}", "ScriptStart")
HotKeySet("{NUMPAD2}", "ScriptStop")
HotKeySet("{NUMPAD3}", "ScriptExit")

While 1
	Sleep(100)
WEnd

Func ScriptStart()
	$bRuning = True
	
	If _IsPressed("01") Then
		While $bRuning
			MouseClick("Main")
			Sleep(75)
		WEnd
	EndIf
EndFunc

Func ScriptStop()
	$bRuning = False
EndFunc

Func ScriptExit()
	Exit
EndFunc
 
Автор
F

Flammable

Новичок
Сообщения
8
Репутация
0
Спасибо, попробую.
Можно еще разъяснить как оно работает? =)
Где это можно скачать? Поиском не нашел..


Добавлено:
Сообщение автоматически объединено:

Попробовал в точности так написать и запустить. Не работает. Вернее, работает, но черт знает как - очереди из нескольких кликов. При отпускании ЛКМ продолжается, останавливается NUM2.

Может вы неправильно меня поняли, num1 нажимается и отпускается, т.е ЛКМ зажимается при отжатой num1.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Flammable [?]
Где это можно скачать?
Это стандартная библиотека в AutoIt, она уже там есть.

Попробовал в точности так написать и запустить
А не проще скопировать отсюда с форума? :D

Не работает. Вернее, работает, но черт знает как
Работает так, как и была поставлена задача.

При отпускании ЛКМ продолжается
Я сделал так как вы и просили... «жмем num1 и при зажатой ЛКМ получаем повторяющиеся клики ЛКМ». Т.е зажать ЛКМ, нажать Num1, и клики начнуться.
Сложность осуществления «нажатия кликов при зажатом клике :wacko: » я уже озвучил, видимо нужно перечитать ещё пару раз то что я написал.

Может вы неправильно меня поняли
А может вы всё же неправильно описали задачу ;)...

num1 нажимается и отпускается, т.е ЛКМ зажимается при отжатой num1
Это уже другая задача...

Код:
Global $bRuning = False

HotKeySet("{NUMPAD1}", "ScriptStart")
HotKeySet("{NUMPAD2}", "ScriptStop")
HotKeySet("{NUMPAD3}", "ScriptExit")

While 1
	Sleep(100)
WEnd

Func ScriptStart()
	$bRuning = True
	
	While $bRuning
		MouseClick("Main")
		Sleep(75)
	WEnd
EndFunc

Func ScriptStop()
	$bRuning = False
EndFunc

Func ScriptExit()
	Exit
EndFunc
 
Автор
F

Flammable

Новичок
Сообщения
8
Репутация
0
А не проще скопировать отсюда с форума?
Гы :rofl: Я же не полный идиот, скопипастил конечно =)
Спасибо большое за пояснения. Скрипт никак теперь не работает=)
Давайте упростим задачу. Безо всяких хоткеев при зажимании ЛКМ эмулировать бесконечный клик до отпускания ЛКМ.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Flammable [?]
при зажимании ЛКМ эмулировать бесконечный клик до отпускания ЛКМ
так сказали же, так не получится. условия выхода из цикла - отжим ЛКМ. в то время как в самом цикле зажим ЛКМ. следовательно цикл никогда не прекратится запустившись раз.
 
Автор
F

Flammable

Новичок
Сообщения
8
Репутация
0
Спасибо, Kaster. Можно ли тогда эмулировать бесконечные клики при зажатой ПКМ, либо другой кнопке мыши или клавиатуры?.. Даже просто при одном клике дополнительно эмулировать еще десяток кликов. Такое реализуемо?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Flammable [?]
Скрипт никак теперь не работает
Работает.

[?]
Можно ли тогда эмулировать бесконечные клики при зажатой ПКМ, либо другой кнопке мыши или клавиатуры?
Можно... но сперва встречный, и я бы сказал лобовой вопрос - к чему это нужно, именно так?

просто при одном клике дополнительно эмулировать еще десяток кликов. Такое реализуемо?
Да:
MouseSetOnEvent_UDF.au3 брать тут.
Код:
#include <MouseSetOnEvent_UDF.au3>

Global $bPrimaryUp_Event = False

HotKeySet("^+e", "_Quit")
_MouseSetOnEvent($MOUSE_PRIMARYUP_EVENT, "MousePrimaryUp_Event", "", "", 0, 0)

While 1
	Sleep(10)
	
	If $bPrimaryUp_Event Then
		$bPrimaryUp_Event = False
		
		_MouseSetOnEvent($MOUSE_PRIMARYUP_EVENT)
		
		For $i = 1 To 10
			MouseClick("Main")
		Next
		
		_MouseSetOnEvent($MOUSE_PRIMARYUP_EVENT, "MousePrimaryUp_Event", "", "", 0, 0)
	EndIf
WEnd

Func MousePrimaryUp_Event()
	$bPrimaryUp_Event = True
EndFunc

Func _Quit()
	Exit
EndFunc



Добавлено:
Сообщение автоматически объединено:

Flammable [?]
эмулировать бесконечные клики при зажатой ПКМ
Вот так например:
Код:
#include <MouseSetOnEvent_UDF.au3>

Global $bSecondaryDown_Event = False

HotKeySet("^+e", "_Quit")

_MouseSetOnEvent($MOUSE_SECONDARYDOWN_EVENT, "MouseSecondary_Event", 1, "", 0, 0)
_MouseSetOnEvent($MOUSE_SECONDARYUP_EVENT, "MouseSecondary_Event", 2, "", 0, 0)

While 1
	Sleep(10)
	
	If $bSecondaryDown_Event Then
		_MouseSetOnEvent($MOUSE_SECONDARYDOWN_EVENT)
		
		While $bSecondaryDown_Event
			MouseClick("Main")
		WEnd
		
		_MouseSetOnEvent($MOUSE_SECONDARYDOWN_EVENT, "MouseSecondary_Event", 1, "", 0, 0)
		_MouseSetOnEvent($MOUSE_SECONDARYUP_EVENT, "MouseSecondary_Event", 2, "", 0, 0)
	EndIf
WEnd

Func MouseSecondary_Event($iEvent)
	$bSecondaryDown_Event = ($iEvent = 1)
EndFunc

Func _Quit()
	Exit
EndFunc
 
Автор
F

Flammable

Новичок
Сообщения
8
Репутация
0
эмулировать бесконечные клики при зажатой ПКМ
Вот так например:
Большое спасибо, CreatoR! Еще вопросы есть.. Происходит эмуляция двойного клика при одиночном клике. Как исправить на одиночный клик?
И второе: Как правильно написать тот же скрипт, но эмулирующий "клики" кнопкой клавиатуры при зажатой ЛКМ? Пробовал просто заменить MouseClick("left") на Send("{ENTER}"), но получаются глюки, если во время эмуляции нажимать другие клавиши клавиатуры.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Flammable [?]
Происходит эмуляция двойного клика при одиночном клике. Как исправить на одиночный клик?
Поставить паузу между кликами?

Пробовал просто заменить MouseClick("left") на Send("{ENTER}")
Только так, или через ControlSend если заранее известен элемент и заголовок окна.
 
Автор
F

Flammable

Новичок
Сообщения
8
Репутация
0
Поставить паузу между кликами?
Можно попробовать..
У меня на мышке 5 кнопок (две основные, одна на колесе и две по бокам от колеса), как узнать имена кнопок около колеса?
 
Автор
F

Flammable

Новичок
Сообщения
8
Репутация
0
CreatoR сказал(а):
Имена? Primary это слева, Secondary справа... :smile: А зачем оно?
Вроде primary и secondary это ЛКМ и ПКМ, а меня интересуют мелкие кнопки возле колеса, используются как назад/вперед. В общем случае, как узнавать имена кнопок?
 

Dzaiter

Новичок
Сообщения
3
Репутация
0
Требуется скрипт, эмулирующий нажатия ЛКМ с заданным интервалом пока ЛКМ зажата. Т.к я нуб в AutoItX и только начинаю разбираться что к чему, хотел бы узнать от вас, как именно это можно реализовать :smile:
Собственно говоря, что я пытался сделать:

Код:
Global $MOUSE_PRIMARYDOWN_EVENT
Global $MOUSE_PRIMARYUP_EVENT

HotKeySet ("{NUMPAD1}", "ScriptStart")
HotKeySet ("{NUMPAD2}", "ScriptStop")
HotKeySet ("{NUMPAD3}", "ScriptExit")

Func ScriptStart()
    if ($MOUSE_PRIMARYDOWN_EVENT = 1) Then
        While ($MOUSE_PRIMARYUP_EVENT = 0)
        MouseClick("left")
        Sleep(75)
        WEnd
    EndIf
EndFunc

Func ScriptStop()
    Sleep(1000000)
EndFunc

Func ScriptExit()
    Exit
EndFunc


Жду вашей поддержки =)


а можно скрипт при зажатой лкм будет кликаться клавиша т (русская)
 

ZaRaki

Знающий
Сообщения
48
Репутация
19
Верх