Что нового

Почти автокликер, чтобы при зажатии двух кнопочек происходили клики

Yamma

Новичок
Сообщения
6
Репутация
0
Нужно чтобы при зажатии(именно зажатии!) капса или контрола+лкм происходило что-то типо авто кликера, но не просто включалось на определённое время или до того пока не выключишь, желательно около 10 кпс (клики каждые 100мс)
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
204
происходило что-то типо авто кликера
Кликера на что? Какую кнопку эмулировать правая/левая...? Клики в текущую позицию или по указанным координатам?
 
Последнее редактирование:
Автор
Y

Yamma

Новичок
Сообщения
6
Репутация
0
Кликер на ЛКМ, клики в текущую позицию
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
204
Код:
;~ AutoIt Version: 3.3.14.5
;~ Author:         Tempo
#include <WinAPISys.au3>
#include <WindowsConstants.au3>
#include <WinAPIvkeysConstants.au3>

Opt('TrayAutoPause', 0)
Global Const $CLICKER_DELAY = 100

start()

Func start()
    Local $tRawInputDevice = DllStructCreate($tagRAWINPUTDEVICE)
    With $tRawInputDevice
        .UsagePage = 0x01 ; HID_USAGE_PAGE_GENERIC
        .Usage = 0x02 ; HID_USAGE_GENERIC_MOUSE
        .Flags = $RIDEV_INPUTSINK
        .hTarget = GUICreate('')
    EndWith
    _WinAPI_RegisterRawInputDevices($tRawInputDevice)
    $tRawInputDevice.Usage = 0x06 ; HID_USAGE_GENERIC_KEYBOARD
    $tRawInputDevice.hTarget = GUICreate('')
    _WinAPI_RegisterRawInputDevices($tRawInputDevice)
    GUIRegisterMsg($WM_INPUT, WM_INPUT)

    While True
        Sleep(10)
    WEnd
EndFunc   ;==>start

Func WM_INPUT($hGui, $iMsg, $wParam, $lParam)
    #forceref $hGui, $iMsg, $wParam
    Local $tRawInputHeader = DllStructCreate($tagRAWINPUTHEADER)
    _WinAPI_GetRawInputData($lParam, $tRawInputHeader, DllStructGetSize($tRawInputHeader), $RID_HEADER)
    If $tRawInputHeader.hDevice Then
        Switch $tRawInputHeader.Type
            Case $RIM_TYPEMOUSE
                Local $tRawInputMouse = DllStructCreate($tagRAWINPUTMOUSE)
                _WinAPI_GetRawInputData($lParam, $tRawInputMouse, DllStructGetSize($tRawInputMouse), $RID_INPUT)
                Switch $tRawInputMouse.ButtonFlags
                    Case $RI_MOUSE_LEFT_BUTTON_DOWN
                        If BitAND(_WinAPI_GetAsyncKeyState($VK_CONTROL), 0x8000) Then AdlibRegister(clicker, $CLICKER_DELAY)
                    Case $RI_MOUSE_LEFT_BUTTON_UP
                        AdlibUnRegister(clicker)
                EndSwitch
            Case $RIM_TYPEKEYBOARD
                Local Static $s_bRegistered = False
                Local $tRawInputKeyboard = DllStructCreate($tagRAWINPUTKEYBOARD)
                _WinAPI_GetRawInputData($lParam, $tRawInputKeyboard, DllStructGetSize($tRawInputKeyboard), $RID_INPUT)
                If $tRawInputKeyboard.VKey = $VK_CAPITAL Then
                    If BitAND($tRawInputKeyboard.Flags, $RI_KEY_BREAK) Then
                        If $s_bRegistered Then
                            AdlibUnRegister(clicker)
                            $s_bRegistered = False
                        EndIf
                    ElseIf Not $s_bRegistered Then
                        AdlibRegister(clicker, $CLICKER_DELAY)
                        $s_bRegistered = True
                    EndIf
                EndIf
        EndSwitch
    EndIf
EndFunc   ;==>WM_INPUT

Func clicker()
    MouseClick($MOUSE_CLICK_LEFT)
EndFunc   ;==>clicker
 
Последнее редактирование:
Автор
Y

Yamma

Новичок
Сообщения
6
Репутация
0
Код:
;~ AutoIt Version: 3.3.14.5
;~ Author:         Tempo
#include <WinAPISys.au3>
#include <WindowsConstants.au3>
#include <WinAPIvkeysConstants.au3>

Opt('TrayAutoPause', 0)
Global Const $CLICKER_DELAY = 100

start()

Func start()
    Local $tRawInputDevice = DllStructCreate($tagRAWINPUTDEVICE)
    With $tRawInputDevice
        .UsagePage = 0x01 ; HID_USAGE_PAGE_GENERIC
        .Usage = 0x02 ; HID_USAGE_GENERIC_MOUSE
        .Flags = $RIDEV_INPUTSINK
        .hTarget = GUICreate('')
    EndWith
    _WinAPI_RegisterRawInputDevices($tRawInputDevice)
    $tRawInputDevice.Usage = 0x06 ; HID_USAGE_GENERIC_KEYBOARD
    $tRawInputDevice.hTarget = GUICreate('')
    _WinAPI_RegisterRawInputDevices($tRawInputDevice)
    GUIRegisterMsg($WM_INPUT, WM_INPUT)

    While True
        Sleep(10)
    WEnd
EndFunc   ;==>start

Func WM_INPUT($hGui, $iMsg, $wParam, $lParam)
    #forceref $hGui, $iMsg, $wParam
    Local $tRawInputHeader = DllStructCreate($tagRAWINPUTHEADER)
    _WinAPI_GetRawInputData($lParam, $tRawInputHeader, DllStructGetSize($tRawInputHeader), $RID_HEADER)
    If $tRawInputHeader.hDevice Then
        Switch $tRawInputHeader.Type
            Case $RIM_TYPEMOUSE
                Local $tRawInputMouse = DllStructCreate($tagRAWINPUTMOUSE)
                _WinAPI_GetRawInputData($lParam, $tRawInputMouse, DllStructGetSize($tRawInputMouse), $RID_INPUT)
                Switch $tRawInputMouse.ButtonFlags
                    Case $RI_MOUSE_LEFT_BUTTON_DOWN
                        If BitAND(_WinAPI_GetAsyncKeyState($VK_CONTROL), 0x8000) Then AdlibRegister(clicker, $CLICKER_DELAY)
                    Case $RI_MOUSE_LEFT_BUTTON_UP
                        AdlibUnRegister(clicker)
                EndSwitch
            Case $RIM_TYPEKEYBOARD
                Local Static $s_bRegistered = False
                Local $tRawInputKeyboard = DllStructCreate($tagRAWINPUTKEYBOARD)
                _WinAPI_GetRawInputData($lParam, $tRawInputKeyboard, DllStructGetSize($tRawInputKeyboard), $RID_INPUT)
                If $tRawInputKeyboard.VKey = $VK_CAPITAL Then
                    If BitAND($tRawInputKeyboard.Flags, $RI_KEY_BREAK) Then
                        If $s_bRegistered Then
                            AdlibUnRegister(clicker)
                            $s_bRegistered = False
                        EndIf
                    ElseIf Not $s_bRegistered Then
                        AdlibRegister(clicker, $CLICKER_DELAY)
                        $s_bRegistered = True
                    EndIf
                EndIf
        EndSwitch
    EndIf
EndFunc   ;==>WM_INPUT

Func clicker()
    MouseClick($MOUSE_CLICK_LEFT)
EndFunc   ;==>clicker
Спасибо большое, всё прекрасно работает
 
Верх