Что нового

[Мышь, клавиатура] бесконечное нажатие кнопки

eXpo

Новичок
Сообщения
5
Репутация
0
Версия AutoIt: 3.3.12.0

Описание: необходимо при нажатии f1 бесконечно нажимать клавишу 4, с задержкой 5 секунд, при повторном нажатии останавливать; при нажатии f2 бесконечно нажимать клавишу 3, с задержкой 1.5 секунды, при повторном нажатии так же останавливать

Примечания:
 

forc1k

Новичок
Сообщения
42
Репутация
1
eXpo сказал(а):
Версия AutoIt: 3.3.12.0

Описание: необходимо при нажатии f1 бесконечно нажимать клавишу 4, с задержкой 5 секунд, при повторном нажатии останавливать; при нажатии f2 бесконечно нажимать клавишу 3, с задержкой 1.5 секунды, при повторном нажатии так же останавливать

Примечания:
Мой вариант
Код:
#include <Misc.au3>

Global $count_F1 = 0
Global $count_F2 = 0

HotKeySet("{F1}", "_StartPress4")
HotKeySet("{F2}", "_StartPress3")
While 1
	Sleep(10)
	$count_F1 = 0
	$count_F2 = 0
WEnd

Func _StartPress4()
	Local $hDLL = DllOpen("user32.dll")
	If _IsPressed("70", $hDLL) Then
		$count_F1 = $count_F1 + 1
		DllClose($hDLL)
	EndIf
	_cycle_F1()
EndFunc   ;==>_StartPress4

Func _StartPress3()
	Local $hDLL = DllOpen("user32.dll")
	If _IsPressed("71", $hDLL) Then
		$count_F2 = $count_F2 + 1
		DllClose($hDLL)
	EndIf
	_cycle_F2()
EndFunc   ;==>_StartPress3

Func _cycle_F1()
	Do
		If $count_F1 <> 2 Then
			Sleep(5000)
			Send("4")
		EndIf
	Until $count_F1 = 2
EndFunc   ;==>_cycle_F1
Func _cycle_F2()
	Do
		If $count_F2 <> 2 Then
			Sleep(1500)
			Send("3")
		EndIf
	Until $count_F2 = 2
EndFunc   ;==>_cycle_F2
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Что подразумевается под "задержкой"? Нажать и удерживать 5 сек? Или 5 сек. между нажатиями?
 
Автор
E

eXpo

Новичок
Сообщения
5
Репутация
0
задержка между нажатиями
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Как-то так:
Код:
HotKeySet("{F1}", "Start_4")
HotKeySet("{F2}", "Start_3")
Global $PauseF1 = False
Global $PauseF2 = False

While 1
	Sleep(200)
WEnd

Func _Press3()
	Send("3")
EndFunc


Func _Press4()
	Send("4")
EndFunc

Func Start_4()
	$PauseF1 = Not $PauseF1
	If $PauseF1 Then
		AdlibRegister('_Press4', 5000)
	Else
		AdlibUnRegister('_Press4')
	EndIf
EndFunc

Func Start_3()
	$PauseF2 = Not $PauseF2
	If $PauseF2 Then
		AdlibRegister('_Press3', 1500)
	Else
		AdlibUnRegister('_Press3')
	EndIf
EndFunc
 

Ksaan

Знающий
Сообщения
207
Репутация
15
eXpo сказал(а):
Версия AutoIt: 3.3.12.0

Описание: необходимо при нажатии f1 бесконечно нажимать клавишу 4, с задержкой 5 секунд, при повторном нажатии останавливать; при нажатии f2 бесконечно нажимать клавишу 3, с задержкой 1.5 секунды, при повторном нажатии так же останавливать

Примечания:

Код:
HotKeySet("{F1}", "_Start_f1")
HotKeySet("{F2}", "_Start_F2")

Global $F1 = False
Global $F2 = False

While 1
	If $F1 = True Then
		Send("4")
		Sleep(5000)
	ElseIf $F2 = True Then
		Send("3")
		Sleep(1500)
	Else
		Sleep(100)
	EndIf
Wend

Func _Start_f1()
	If $F1 = True Then
		$F1 = False
		$F2 = False
	Else
		$F1 = True
		$F2 = False
	EndIf
EndFunc		;==>_Start_f1

Func _Start_F2()
	If $F2 = True Then
		$F2 = False
		$F1 = False
	Else
		$F2 = True
		$F1 = False
	EndIf
EndFunc		;==>_Start_f2
 
Верх