Что нового

[Мышь, клавиатура] Привязка клика по координатам к клавише

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Вот так, нажмете на F11, сработает hotkey, запустит функцию down, в которой курсор переместится в позицию 369 321, зажмет левую кнопку мыши, и будет держать зажатой пока нажата F11
Код:
#include <Misc.au3>
HotKeySet('{F11}', 'down')
While 1
	Sleep(200)
WEnd

Func down()
	Local $x = 368, $y = 321
	Local Static $F11 = '7A'
	MouseMove($x, $y)
	MouseDown('left')
	While _IsPressed($F11)
		Sleep(10)
	WEnd
	MouseUp ( "left" )
EndFunc

er1cius [?]
2. Как завязать комбинацию из двух клавиш на клик в определенной позиции курсора?
Посмотрите в справка раздел Send Key list
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
inververs,
ИМХО, так корректнее.
Код:
#include <Misc.au3>

HotKeySet('{F11}', '_Down')
HotKeySet('{Esc}', '_Exit')
While Sleep(200)
WEnd

Func _Down()
	HotKeySet('{F11}')
	Local $iX = 368, $iY = 321, $sF11 = '7A'

	MouseMove($iX, $iY, 0)
	MouseDown('primary')
	While _IsPressed($sF11)
		Sleep(10)
	WEnd
	MouseUp('primary')
	HotKeySet('{F11}', '_Down')
EndFunc   ;==>_Down

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
madmasles [?]
ИМХО, так корректнее.
Да, согласен.
В функции можно прописать
Код:
Local $hotKey = @HotKeyPressed
	HotKeySet($hotKey)
...
HotKeySet($hotKey, 'down')

что бы не указывать клавиши.
 

er1cius

Новичок
Сообщения
2
Репутация
0
Спасибо большое за ответы. Пришлось еще поразбираться, но кое-что получилось уже, и оно работает так, как хотелось - удерживает клик пока нажата необходимая клавиша. Получился неказистый способ привязать wasd к джойстику.
Код:
#include <Misc.au3>
HotKeySet('w', '_Down1')
HotKeySet('s', '_Down2')
HotKeySet('d', '_Down3')
HotKeySet('a', '_Down4')
While Sleep(100)
WEnd
Func _Down1()
    HotKeySet('w')
    Local $iX = 296, $iY = 719, $sw = '57'

    MouseMove($iX, $iY, 0)
    MouseDown('primary')
    While _IsPressed($sw)
        Sleep(10)
    WEnd
    MouseUp('primary')
    HotKeySet('w', '_Down1')
EndFunc
Func _Down2()
    HotKeySet('s')
    Local $iX = 291, $iY = 963, $ss = '53'

    MouseMove($iX, $iY, 0)
    MouseDown('primary')
    While _IsPressed($ss)
        Sleep(10)
    WEnd
    MouseUp('primary')
    HotKeySet('s', '_Down2')
EndFunc
Func _Down3()
    HotKeySet('d')
    Local $iX = 419, $iY = 836, $sd= '44'

    MouseMove($iX, $iY, 0)
    MouseDown('primary')
    While _IsPressed($sd)
        Sleep(10)
    WEnd
    MouseUp('primary')
    HotKeySet('d', '_Down3')
EndFunc
Func _Down4()
    HotKeySet('a')
    Local $iX = 168, $iY = 836, $sa = '41'

    MouseMove($iX, $iY, 0)
    MouseDown('primary')
    While _IsPressed($sa)
        Sleep(10)
    WEnd
    MouseUp('primary')
    HotKeySet('a', '_Down4')
EndFunc


inververs сказал(а):
2. Как завязать комбинацию из двух клавиш на клик в определенной позиции курсора?
Посмотрите в справка раздел Send Key list
Я внимательно просмотрел справку, но так и не нашел примерный ответ на то, как нажатие, например, тех же W+D я могу завязать на ту же функцию клика по координатам с удержанием, что указал выше. Подскажите, пожалуйста, что я пропустил?
Спасибо.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
er1cius [?]
тех же W+D я могу завязать на ту же функцию клика по координатам с удержанием, что указал выше. Подскажите, пожалуйста, что я пропустил?
Такое вроде нельзя сделать стандартным способом. Кажется на форуме есть расширенная _IsPressed в которой можно задавать 2 клавиши. Поищите.


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

http://autoit-script.ru/index.php/topic,1391.0.html
 

Ksaan

Знающий
Сообщения
207
Репутация
15
inververs сказал(а):
er1cius [?]
тех же W+D я могу завязать на ту же функцию клика по координатам с удержанием, что указал выше. Подскажите, пожалуйста, что я пропустил?
Такое вроде нельзя сделать стандартным способом. Кажется на форуме есть расширенная _IsPressed в которой можно задавать 2 клавиши. Поищите.


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

http://autoit-script.ru/index.php/topic,1391.0.html


Думаешь нельзя, а если вот так? ток я без проверки, через телефон, отпишитесь самому любопытно :smile:
Код:
#include <Misc.au3>

Local $hDLL = DllOpen("user32.dll")

While 1
     If _IsPressed("44", $hDLL) And _IsPressed("57", $hDLL) Then ;Key "W" and "D".

		 HotKeySet('w')
		 Local $iX = 296, $iY = 719, $sw = '57'
		 MouseMove($iX, $iY, 0)
		 MouseDown('primary')
			While _IsPressed("44", $hDLL) And _IsPressed("57", $hDLL)
				;ConsoleWrite("_IsPressed - Нажата клавиша " & @CRLF)
				;Sleep(1000)
				MouseMove($iX, $iY, 0)
			WEnd
		 MouseUp('primary')
		 HotKeySet('w', '_Down1')
     EndIf
	  Sleep(250)
WEnd

DllClose($hDLL)
 

Andrey_Semenow

Новичок
Сообщения
1
Репутация
0
Здравствуйте, а вот куда нужно копировать весь алгоритм? В АХК? Просто у меня вылазиет ошибка.
 

Nex1q

Новичок
Сообщения
1
Репутация
0
Здравствуйте, а вот куда нужно копировать весь алгоритм? В АХК? Просто у меня вылазиет ошибка.
Нет, не в ахк. AutoIt-и есть язык программирования. Его можна скачать по ссылке:
 
Верх