Что нового

Случайная задержка для каждой клавиши, опцией

Demon83

Новичок
Сообщения
14
Репутация
0
Код:
Opt("SendKeyDelay", 100 + Random(0, 55, 1))
Opt("SendKeyDownDelay", 50 + Random(0, 55, 1))

Минус делающий их бесполезными для меня, в том, что рандомизатор срабатывает только один раз, а нужно для каждой клавиши! А писать 4-5 строчек кода для каждой клавиши не хотелось бы.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Оформи в функцию и вызывай каждый раз перед нажатием клавиши.
 
Автор
D

Demon83

Новичок
Сообщения
14
Репутация
0
:smile: Одна лишняя строка это конечно лучше чем 5, но тогда уж лучше полностью свою функцию писать, с усложнённым рандомизатором...
Я так понимаю обойтись просто, один раз написанной, опцией не удасться?



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

И самое главное, при такой записи...
Код:
_RandomKeyOptions()
ControlSend($hWnd, '', '', "{1}{2}{q}{3}{4}")

Задержки этих клавиш, будут одинаковые!
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Будут да. По другому придётся реализовывать через {1 down} {1 up}
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Чуть переделал пример из справки для "ControlSend" с функцией случайной паузы для каждой клавиши :
Код:
Run('notepad.exe')

; Ожидание 5 секунд до появление окна блокнота
$Hwnd = WinWait("[CLASS:Notepad]", "", 5)
If Not $Hwnd Then
	MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
	Exit
EndIf

; Высылает строку символов в элемент
;ControlSend($hWnd, "", "Edit1", "Эта строка выслана в элемент Edit")
_MySend($Hwnd, "Эта строка{Enter}{F5}{Enter}выслана в элемент {{}Edit{}}^a")

; Закрывает блокнот.
;WinClose($Hwnd)

Func _MySend($Hwnd, $Text)
	$aSymbol = StringSplit($Text, '')
	For $i = 1 To $aSymbol[0]
		$NextSymbol = ''
		If $aSymbol[$i] = '{' Then
			Do
				$NextSymbol &= $aSymbol[$i]
				$i += 1
			Until $aSymbol[$i] = '}'
			If $i + 1 <= $aSymbol[0] And $aSymbol[$i + 1] = '}' Then
                $NextSymbol &= '}}'
				$i+=1
			Else
				$NextSymbol &= '}'
			EndIf
		ElseIf $aSymbol[$i] = '!' Or $aSymbol[$i] = '+' Or $aSymbol[$i] = '^' Or $aSymbol[$i] = '#' Then
			$NextSymbol = $aSymbol[$i] & $aSymbol[$i + 1]
			$i += 1
		Else
			$NextSymbol = $aSymbol[$i]
		EndIf
		Opt("SendKeyDelay", 100 + Random(0, 55, 1))
		Opt("SendKeyDownDelay", 50 + Random(0, 55, 1))
		ControlSend($Hwnd, '', '', $NextSymbol)
	Next
EndFunc   ;==>_MySend
 
Верх