Что нового

Макрос нажатия ЛКМ

ruben-89

Новичок
Сообщения
1
Репутация
0
Добрый день нужна помощь в написании макроса сразу говорю я новенький знания на уровне ознакомления .. по этому прошу помощи
Версия AutoIt: 3.3.10.2
Описание:
Активация макроса Ф5 отключение Ф6
Суть макроса:
При нажатии ЛКМ производится от 20 до 50 нажатий ЛКМ
Примечания:
Процесс может быть скрытым по этому макрос должен работать несмотря где и для чего он используется
кто поможет стукните в скайп rubanov89 или на мыло
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
#include <Misc.au3>
Opt("MouseClickDelay", 100)
Opt("MouseClickDownDelay", 60)
Global $paused, $t, $hDll
OnAutoItExitRegister("OnExit")
HotKeySet("{F5}", "start")
HotKeySet("{F6}", "pause")
HotKeySet("{ESC}", "quit")
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, Default, Random(20, 50, 1))
	$t = False
EndFunc   ;==>clicks

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

erlik

Продвинутый
Сообщения
317
Репутация
84
А вот так это выглядит на AutoHotKey :smile: На мой взгляд AHK для подобных задач куда уместнее и проще.
Код:
;SetMouseDelay, 10      ; задержка между кликами - по умолчанию 10 мск, -1 никогда, существенно увеличивает скорость кликов 
; при старте переводим скрипт в неактивное состояние
; для начала работы жмем F6,  для заморозки действий - тоже F6
Send {F6}

;старт кликов при нажатии LKM
*LButton::
ToolTip ; можно закомментировать
Random, iClickCount, 20, 50
Loop
{
MouseClick, L, , , iClickCount  
; считаем общее число нажатий - число кликов умноженное на число итераций (при длительном удержании LKM)
TotalCount:=iClickCount * A_Index  ; можно закомментировать
ToolTip, Нажато  %iClickCount% * %A_Index%=%TotalCount% раз ; можно закомментировать
If !GetKeyState("LButton", "P")
Break
}
Return

; хоткеи
ESC::ExitApp  ; выход из скрипта
F6::Suspend  ; заморозить действие горячих клавиш
 

barabuzza

Новичок
Сообщения
5
Репутация
0
Добрый день, прошу помощь в корректировке макроса, который просил создать автор в первом посте.
Старт макроса F5. Пауза макроса F6. При запуске - постоянно держится нажатой левая кнопка мыши. При паузе - кнопка отпускается.
Буду благодарен за помощь.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Немного переделал пример из справки:
Код:
#include <Misc.au3>

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

While 1
    If _IsPressed("74", $hDLL) Then
        ConsoleWrite("_IsPressed - Нажата клавиша F5." & @CRLF)
        MouseDown("left")
        ; Цикл ожидания, пока клавиша F6 не будет нажата
        While 1
             If _IsPressed("75", $hDLL) Then
                 ConsoleWrite("_IsPressed - Нажата клавиша F6." & @CRLF)
                 MouseUp("left")
                 ExitLoop
             EndIf
            Sleep(250)
        WEnd

    ElseIf _IsPressed("1B", $hDLL) Then
        MsgBox(4096, "_IsPressed", "Нажата клавиша Esc, поэтому скрипт завершает работу.")
        ExitLoop
    EndIf
    Sleep(250)
WEnd

DllClose($hDLL)
 

barabuzza

Новичок
Сообщения
5
Репутация
0
Немного переделал пример из справки:
Код:
#include <Misc.au3>

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

While 1
    If _IsPressed("74", $hDLL) Then
        ConsoleWrite("_IsPressed - Нажата клавиша F5." & @CRLF)
        MouseDown("left")
        ; Цикл ожидания, пока клавиша F6 не будет нажата
        While 1
             If _IsPressed("75", $hDLL) Then
                 ConsoleWrite("_IsPressed - Нажата клавиша F6." & @CRLF)
                 MouseUp("left")
                 ExitLoop
             EndIf
            Sleep(250)
        WEnd

    ElseIf _IsPressed("1B", $hDLL) Then
        MsgBox(4096, "_IsPressed", "Нажата клавиша Esc, поэтому скрипт завершает работу.")
        ExitLoop
    EndIf
    Sleep(250)
WEnd

DllClose($hDLL)
Большое спасибо ) за помощь! Всех благ вам, да вернется вам ваше добро сторицей!
Сообщение автоматически объединено:

Можно еще немного попросить помощи?
Добавить такое условие, что после включения функции MouseDown("left") - отключение после нажатия F6, а если не отключено, то в течение 180 секунд после запуска функции MouseDown("left"), функция на секунду прерывается и снова включается MouseDown("left") и так далее по циклу.. Пока F6 не будет нажата.
 
Последнее редактирование:

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Попробуйте так :
Код:
#include <Misc.au3>

Local $Timer = 180000 ;Время зажатой ЛКМ в миллисекундах
Local $Pause = 1000 ;Время на которое отпускать ЛКМ при длительном удержании
Local $hDLL = DllOpen("user32.dll")

While 1
    If _IsPressed("74", $hDLL) Then
        ConsoleWrite("_IsPressed - Нажата клавиша F5." & @CRLF)
        MouseDown("left")
        ; Цикл ожидания, пока клавиша F6 не будет нажата
        $Time = TimerInit()
        While 1
            If _IsPressed("75", $hDLL) Then
                ConsoleWrite("_IsPressed - Нажата клавиша F6." & @CRLF)
                MouseUp("left")
                ExitLoop
            EndIf
            If TimerDiff($Time) >= $Timer Then
                ConsoleWrite("_IsPressed - срабатывание по таймеру." & @CRLF)
                MouseUp("left")
                Sleep($Pause)
                MouseDown("left")
                $Time = TimerInit()
            EndIf
            Sleep(250)
        WEnd

    ElseIf _IsPressed("1B", $hDLL) Then
        MsgBox(4096, "_IsPressed", "Нажата клавиша Esc, поэтому скрипт завершает работу.")
        ExitLoop
    EndIf
    Sleep(250)
WEnd

DllClose($hDLL)
 

barabuzza

Новичок
Сообщения
5
Репутация
0
Попробуйте так :
Спасибо еще раз. Все работает.
Сообщение автоматически объединено:

Доброго времени суток!
Прошу помощи в создании скрипта для игры:
Окно запущено в отдельном приложении.
Title Roblox
Class WINDOWSCLIENT
скрипт стартует при нажатии F5
Останавливается F6
Начально задается интервал времени, когда ЛКМ находится в нажатом состоянии, в том месте, где находится курсор.
при нажатии F5 цикл стартует.
- ЛКМ становится нажатой, после окончания интервала времени, ЛКМ отпускается.
- Нажимается цифра 2. отпускается.
- курсор мыши в том месте, где находится, делает клик ЛКМ
- перемещается в координаты: -1200, 292, делает клик ЛКМ
- перемещается в координаты: -1218, 329, делает клик ЛКМ
- перемещается в координаты: -827, 557, делает клик ЛКМ
- перемещается в координаты: -913, 505, делает клик ЛКМ
- перемещается в координаты: -732, 501, делает клик ЛКМ,
- после этого нажатие клавиши «цифра 1», отпускается.
- курсор перемещается в координаты: -793, 423
снова цикл снова, после слов «цикл стартует» и так по кругу до нажатия F6
Esc – завершение работы скрипта и выход .
Перемещение курсора можно сделать мгновенным.
 
Последнее редактирование:

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Так ?
Код:
#include <Misc.au3>

Local $Timer = 180000 ;Время зажатой ЛКМ в миллисекундах
Local $hDLL = DllOpen("user32.dll")

While 1
    If _IsPressed("74", $hDLL) Then
        ConsoleWrite("_IsPressed - Нажата клавиша F5." & @CRLF)
        MouseDown("left")
        ; Цикл ожидания, пока клавиша F6 не будет нажата
        $Time = TimerInit()
        While 1
            If _IsPressed("75", $hDLL) Then
                ConsoleWrite("_IsPressed - Нажата клавиша F6." & @CRLF)
                MouseUp("left")
                ExitLoop
            EndIf
            If TimerDiff($Time) >= $Timer Then
                ConsoleWrite("_IsPressed - срабатывание по таймеру." & @CRLF)
                MouseUp("left")
                Send("2")
                MouseClick("left")
                MouseClick("left", 1200, 292)
                MouseClick("left", 1218, 329)
                MouseClick("left", 827, 557)
                MouseClick("left", 913, 505)
                MouseClick("left", 732, 501)
                Send("1")
                MouseMove(793, 423)
                MouseDown("left")
                $Time = TimerInit()
            EndIf
            Sleep(250)
        WEnd

    ElseIf _IsPressed("1B", $hDLL) Then
        MsgBox(4096, "_IsPressed", "Нажата клавиша Esc, поэтому скрипт завершает работу.")
        ExitLoop
    EndIf
    Sleep(250)
WEnd
 

barabuzza

Новичок
Сообщения
5
Репутация
0
Да, получилось ) Там похоже защита стоит. При использовании скрипта, после его срабатывания, в конце цикла выбрасывает в космос ))) и надо вмешиваться, т.к. скрипт начинает воздух колотить.
Но в любом случае - спасибо за помощь и оперативный ответ
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Можно пробовать запускать программу на виртуальной машине , может не сработает защита.
 

barabuzza

Новичок
Сообщения
5
Репутация
0
Спасибо, отпишусь.
Сообщение автоматически объединено:

Можно пробовать запускать программу на виртуальной машине , может не сработает защита.
поставил виртуалку - приложение написало - не хватает вирт. памяти у видео. Стер все с расстройства )
 
Последнее редактирование:
Верх