1 (изменено: VladTre, 2021-01-12 01:31:43)

Тема: AHK: Одним нажатием мыши тройной клик с рандомом

Всем привет, вот у меня какая проблема мне надо чтоб когда я нажимаю один раз правую клавишу мыши она нажималась три раза, но каждое автоматическое нажатие имело определённое рандомно время нажатия в миле секундах.  Я вот мудровал, но что так и не намудрив, прошу помочь.


RButton::
Send {RButton}
Random, SleepTime, 75, 150
Sleep, %SleepTime% 
Send {RButton}
Random, sleepTime, 1, 74
Sleep, %sleepTime%
Send {RButton}
return

2

Re: AHK: Одним нажатием мыши тройной клик с рандомом

VladTre, приведите заголовок темы и оформление кода в соответствие с правилами форума.

3 (изменено: pixel75, 2021-01-13 13:10:34)

Re: AHK: Одним нажатием мыши тройной клик с рандомом


my_sleep(a:=0, b:=0)
	{
		Random, pz, a, b
		end_timer := A_TickCount + pz
		while ( A_TickCount <= end_timer )
		{
			Sleep, 10
		}
		Return
	}

	RButton::
	Loop, 3
	{
		my_sleep(50, 300)
		Send, {RButton Down}
		my_sleep(30, 100)
		Send, {RButton Up}
	}
	Return

4 (изменено: VladTre, 2021-01-12 14:17:31)

Re: AHK: Одним нажатием мыши тройной клик с рандомом

Благодарю тебя.

5 (изменено: __Михаил__, 2021-01-12 22:17:14)

Re: AHK: Одним нажатием мыши тройной клик с рандомом

VladTre

Просто сделать перехват клавиши таким методом:

$RButton::

pixel75

1) Код нужно оформлять тегом 'code'.
2) Что за индуский тупорылый метод ждать (Sleep) через цикл, так ещё через функцию?

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

6 (изменено: pixel75, 2021-01-13 13:46:53)

Re: AHK: Одним нажатием мыши тройной клик с рандомом

Согласен по поводу пауз, наверняка существуют более изящные методы, но что то я не заметил желающих ответить человеку на предмет того, как ему реализовать рандомные паузы. Согласен, можно было бы упороться и каждую новую паузу в скриптах на  пару тысяч строк, прописывать каждый раз Random, S, 500, 1000 потом брать S в качестве значения Sleep. Я же шел от попытки уменьшить стену кода, потому использую функции, в которые передается требуемый интервал. Раньше делал что  то типа:

 	
RandomPauza()         			    
{					
	Random, pauza, 200, 500
	return pauza
}	
соответственно в теле писал
 Sleep, % RandomPauza()

но это когда повсюду в теле кода, интервал примерно одинаков. Мне же, в моих попытках максимально имитировать человека, каждый раз требовалось задавать немного или много меньший или больший интервал, что выливалось в человеко-часы и насилие над колесом мыши в перемотке получавшихся простыней, ибо интеллектуального ресурса на большее изящество у меня не достаёт. Потому я пришел к необходимости передавать интервалы в функцию, которую так же где то удачно содрал, и совсем не исключено, что не на этом самом форуме, ставшем безусловно для меня, Библией. И именно потому такова конструкция, чтобы паузы, перемежавшиеся в коде с выполняемыми таймерами, не конфликтовали с последними.
Простите меня Бога ради великодушно, идеальные люди! Не стреляйте в пианиста, ибо он играет, как умеет!Я был бы счастлив увидеть всё таки Ваш кунг-фу, Мастер! Явите алчущим то самое Искусство изящества, и видит Бог, я почту за честь использовать Ваш гений.

7

Re: AHK: Одним нажатием мыши тройной клик с рандомом

pixel75

Как пример:

; Функция для ожидания от 'A' до 'Z' мс.
My_Sleep(A := 0, Z := 1000){
 Random, W, A, Z
 Sleep, % W
 Return W
}


F2::
ToolTip, % "Нажата клавиша: " A_ThisHotkey, 0,0
KeyWait, %A_ThisHotkey%, U	; Ждём отпуска клавиши.
T := My_Sleep()			; Ждать случайно, по умолчанию до 1 секунды.
ToolTip, % "Случайное число ожидания было: " T, 0,0
My_Sleep(1000,3000)
ToolTip
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101