1 (изменено: Military, 2017-07-24 04:13:32)

Тема: AHK: Нажатия клавиш 1-5 с случайной задержкой.

Добрый день.
Нужна помощь в простеньком скрипте по нажатию клавиши F1 должны нажиматься клавиши 1-5 с рандомной задержкой между нажатием 1-60 миллисекунд.
Пока что поиск по интернет дал следующие результаты:


F1::
 {
	sendinput, 1
	sleep, % ran(1, 60)
	sendinput, 2
	sleep, % ran(1, 60)
	sendinput, 3
	sleep, % ran(1, 60)
	sendinput, 4
	sleep, % ran(1, 60)
	sendinput, 5
	sleep, % ran(1, 60)
 }
return

ran(min, max)
 {
   random, ran, min, max
   return ran
 }


Но нужно чтобы клавиши нажимались не подряд а одновременно и у каждой клавиши была задержка.

2 (изменено: svoboden, 2017-08-15 16:59:26)

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

Они и так одновременно нажимаются, может, так правильнее записать:

F1::
for k, v in ["1", "2", "3", "4", "5"] {
Random, v, 2, 5
SendInput, % v
sleep, % ran(1, 60)
}
return

ran(min, max)
 {
   random, ran, min, max
   return ran
 }

3 (изменено: Military, 2017-07-22 20:54:47)

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

svoboden
Дело  том что при выполнении скрипта всегда на выдаче:

12345

Значит клавиши нажимаются последовательно, а хотелось бы, чтобы было примерно так:

25431
12543
43215
...

В зависимости от задержки. Чтобы ввод клавиш был параллельный.

4 (изменено: stealzy, 2017-08-07 16:35:29)

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

F1::
For k, v in [1, 2, 3, 4, 5] {
	SendNumFn := Func("SendNum").Bind(v)
	SetTimer % SendNumFn, % "-" rnd(1, 60)
}
Return

SendNum(n) {
	Send % n
}
rnd(min, max) {
		random, ran, min, max
		return ran
}

5 (изменено: svoboden, 2017-08-15 16:57:27)

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

?

6

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

stealzy

13245
12345
53124
12354
35142
45312
25431
42315
23451
13452
54231
23451

Спасибо! Работает так как надо. +

7

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

Забавно, с телефона удалось написать рабочий код.
Надо бы добавить еще SetBatchLine -1, потому что иначе каждая строка выполнения забирает 10 ms. Таким образом элементы в начале массива будут чаще идти первыми.
И вообще, ahk не оперирует временем меньше окола 10 ms, для этого придумали специальные библиотеки, гуглить sub 10 ms timers site:autohotkey.com. Фактически получается список таймеров на 10, 20, 30, 40, 50 мс.

8 (изменено: svoboden, 2017-08-01 06:27:11)

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

stealzy, так не очень рабочий код получился у вас, если требуется выводить случайные числа, то в вашем коде часто эти числа повторяются, например, число 12345.

9

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

svoboden, рабочий, но неправильный, и я написал почему.
Раз ТС устроило, код исправлять не стал. А вы мои поправки внесли?
И вообще, десять дней прошло, если чем обидел, прошу прощения.

10 (изменено: svoboden, 2017-08-02 01:35:54)

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

stealzy, просто не очень понятно. Тээс'у почти не нужны были числа 12345 и вдруг резко понадобились. А менять свой пример, какой смысл, если пользователю нужен другой вариант? Пусть остается как было. И еще вместо "SetBatchLine -1", надо "SetBatchLines -1".

11

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

svoboden

34433
44245
23255
45544
22522
52444

Так очень много повторов одних и тех же клавиш, я так понял ТС повторы не нужны. Недавно такая же тема была и вы там этот же код предлагали.
Думаю надо так:


$F1::
	Keys := [1, 2, 3, 4, 5]
	Loop % Keys.MaxIndex() {
		SendInput, % "{" Keys.RemoveAt(ran(1, Keys.MaxIndex())) "}"
		sleep, % ran(1, 60)
	}
	return

ran(min, max) {
	random, ran, min, max
	return ran
}

stealzy
В варианте с таймером на малых интервалах так сказать "плохие случайности", очень часто выпадает "12345" или группы из 3, 4 цифр идущие по порядку.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

12

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

serzh82saratov, у меня повторяются цифры, но числа повторяются редко.

13

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

Я в этих темах из задания понял, что цифры (они же клавиши) повторятся не должны.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

14 (изменено: svoboden, 2017-08-07 12:53:41)

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

Если смотреть по примеру, то да, но неясно, какие числа идут дальше. Я просто хотел понять, в чем правильность этого ответа, если числа повторяются.

15

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

svoboden пишет:

неясно, какие числа идут дальше

Те на которые укажет случай. Если имеете ввиду чтобы не было 2 одинаковых вариантов между "сериями" 42135 54132 24513, то это тоже решаемо.


$1::
	Keys := ["a", "b", "c", "d", "f", "e"]
	Loop % Keys.MaxIndex() {
		While (Keys[I := ran(1, Keys.MaxIndex())]) = LastKey
			Continue
		SendInput, % "{" (Key := Keys.RemoveAt(I)) "}", LastKey := ""
		Sleep, % ran(1, 60)
	}
	SendInput, % "{Space}"
	LastKey := Key
	Return

ran(min, max) {
	random, ran, min, max
	Return ran
}
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

16

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

svoboden, кто говорил что ответ 6 правильный?
Уже раз пять обсосали, я, вы, и потом еще serzh82saratov.

serzh82saratov пишет:

stealzy
В варианте с таймером на малых интервалах так сказать "плохие случайности", очень часто выпадает "12345" или группы из 3, 4 цифр идущие по порядку.

stealzy пишет:

sub 10 ms timers

https://autohotkey.com/boards/viewtopic … p;start=20

Не знаю, зачем мы это обсуждаем, но вариант со sleep я бы написал так:

SetBatchLines -1
SetKeyDelay 0, 0

F1::
For k, v in Mix([1, 2, 3, 4, 5]) {
	Send % v
	Sleep % Rnd(1, 60)
}
Return

Mix(Arr) {
	MixedArr := []
	For k, v in Arr
		MixedArr.Insert(Pos := Rnd(1, k), v)
	Return MixedArr
}

Rnd(min, max) {
	Random, rnd, min, max
	Return rnd
}

17

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

stealzy пишет:

Не знаю, зачем мы это обсуждаем,

Я тоже не знаю зачем мы тут вообще что то обсуждаем.

stealzy пишет:

но вариант со sleep я бы написал так:

Наверное кто бы как написал.
Это вот тут (как вы выразились) и "обсасываем".

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

18

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

stealzy пишет:

svoboden, кто говорил что ответ 6 правильный?

Military пишет:

Спасибо! Работает так как надо.

Так я ничего не обсуждаю. Просто мне не ясно, по какому принципу автор вопроса считает, что скрипт работает так, как надо? Что-то я сомневаюсь, что ему нужны были повторяющие числа, исходя из вопроса, но вряд ли я это узнаю.

19

Re: AHK: Нажатия клавиш 1-5 с случайной задержкой.

Эту тайну, покрытую мраком, ТС унесет с собой в могилу ;-).