Что нового

[Мышь, клавиатура] Макрос нажатия ЛКМ

TiranCool

Новичок
Сообщения
78
Репутация
0
Версия AutoIt:Version 3.5.4 3.
Код:
#include <Misc.au3>
Opt("MouseClickDelay")
Opt("MouseClickDownDelay")
Global $paused, $t, $hDll
OnAutoItExitRegister("OnExit")
HotKeySet("{F5}", "start")
HotKeySet("{F6}", "pause")
HotKeySet("{0}", "quit")
$aMousePos = MouseGetPos()
$iX = $aMousePos[0]
$iY = $aMousePos[1]
Func OnExit()
    ToolTip("")
    DllClose($hDll)
EndFunc   ;==>OnExit
Func start()
    ; ToolTip("")
    ToolTip("Script started... Press F6 to pause.", 1, 1)
    $paused = False
EndFunc   ;==>start
Func pause()
    $paused = True
    ; ToolTip("")
    ToolTip("Script paused... Press F5 to start.", 1, 1)
    While $paused = True
        Sleep(100)
    WEnd
    ; ToolTip("")
EndFunc   ;==>pause
Func quit()
    Exit
EndFunc   ;==>quit
Func clicks()
    If $t = True Then Return SetError(1, 0, 0)
    $t = True
   MouseClick("left", Default, $iY-10); как тут сделать, не могу понять
    $t = False
EndFunc   ;==>clicks

start()
$hDll = DllOpen("user32.dll")
While 1
    $lkmpressed = _IsPressed("01", $hDll)
    If $lkmpressed Then
        clicks()
    EndIf
WEnd
DllClose($hDlll)


Описание:Не могу сообразить, как при удерживающейся левой клавиши мыши, выполнять команду клик и смещение мыши вниз на столько "..." то пикселей. Помогите пожалуйста

:stars:
 

eralex

Знающий
Сообщения
64
Репутация
5
Используй команды:

MouseDown ( "button" )
MouseMove ( x, y )
MouseUp ( "button" )
 
Автор
T

TiranCool

Новичок
Сообщения
78
Репутация
0
Отчасти подходит, но есть проблема, там конкретные координаты выставляешь, а надо, чтобы в любой точке при этом можно было вести прицел влево вправо самостоятельно. В итоге многократное нажатие ЛКМ + смещение курсора вниз например на 15, но без блокировки движения самой мыши и без привязки к координатам.
 
Автор
T

TiranCool

Новичок
Сообщения
78
Репутация
0
как ей пользоваться, не разу не использовал, почитал, но не понял как.
В начале прописана эта функция, я с ней не пойму, координаты берутся непонятно.
Код:
$aMousePos = MouseGetPos()
$iX = $aMousePos[0]
$iY = $aMousePos[1]
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <Misc.au3>
;Opt("MouseClickDelay")
;Opt("MouseClickDownDelay")
Global $bPaused, $hDll, $aXY
OnAutoItExitRegister("_OnExit")
HotKeySet("{F5}", "_Start")
HotKeySet("{F6}", "_Pause")
HotKeySet("{0}", "_Exit")

$hDll = DllOpen("user32.dll")
_Start()

While 1
	If _IsPressed("01", $hDll) Then
		$aXY = MouseGetPos()
		MouseMove($aXY[0], $aXY[1] - 10)
	EndIf
	Sleep(10)
WEnd

Func _Start()
	ToolTip("Script _Started... Press F6 to _Pause.", 1, 1)
	$bPaused = False
EndFunc   ;==>_Start

Func _Pause()
	$bPaused = True
	ToolTip("Script _Paused... Press F5 to _Start.", 1, 1)
	While $bPaused
		Sleep(100)
	WEnd
EndFunc   ;==>_Pause

Func _OnExit()
	DllClose($hDll)
EndFunc   ;==>_OnExit

Func _Exit()
	Exit
EndFunc   ;==>_Quit
 
Автор
T

TiranCool

Новичок
Сообщения
78
Репутация
0
Все отлично, но влево и в право он не очень поддается, и вопрос еще как ускорить работу цикла, что бы цикл повторялся быстрее?
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
TiranCool, 3 параметр MouseMove отвечает за скорость перемещения мыши / убрать Sleep(10) увеличит нагрузку на процессор
 
Автор
T

TiranCool

Новичок
Сообщения
78
Репутация
0
Понял. А ускорить выполнение самого цикла, а точнее нажатия на ЛКМ и ее смещение, можно?
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
TiranCool,
Код:
;
MouseMove($aXY[0], $aXY[1] - 10) ;замените -10 на нужное расстояние смещения;
;



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

TiranCool [?]
А ускорить выполнение самого цикла, а точнее нажатия на ЛКМ и ее смещение, можно?
Скрипт не нажимает ЛКМ он лишь смещает мышь когда вы её нажимаете
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
TiranCool, если вам нужен допольнительный клик (кроме того который произойдет после того как вы отпустите ЛКМ) можете добавить
 
Автор
T

TiranCool

Новичок
Сообщения
78
Репутация
0
нет, нужно во время удерживания клавиши ЛКМ дополнительные нажатия, к примеру с интервалом 50мс, либо двойные клики между циклом. Уже пробовал свой вариант, безуспешен(
Код:
MouseClick("left")
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
TiranCool, функция MouseClick включает в себя события нажатия и отжатия так что после её использования _IsPressed будет возвращать False. Используйте другие клавиши для удерживания
 
Верх