;~ 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