Что нового

Мышь, клавиатура рандомное перемещение курсора мыши

MiGell

Новичок
Сообщения
2
Репутация
0
Добрый день.

Сделал скрипт отслеживающий неактивность юзера по перемещению мыши или работе на клавиатуре. Т.е., если пользователь ничего не делает в течении секунд 30 - 40 , скрипт начинает сам перемещать курсор мыши по случайным координатам экрана. Как только снова юзер двинул мышь или нажал что-то на клавиатуре , программа переходит в режим ожидания и не мешает пользователю. Механизм отслеживания нажатий на клавиатуре через Win API подсмотрел в одной из программ CreatoR , за что ему спасибо. Цель программы на давать запуститься сэйв скрину на корпоративном ПК.
Не нашел как отслеживать нажатия левой , правой и прочих кнопок на самой мыши. Если мышь не перемещать , а только нажимать кнопки на ней, скрипт "перехватит" управления на себя.
Подскажите как отслеживать нажатия кнопок мыши.

Версия AutoIt : 3.3.14.5
OS : Windows 10 Pro

Код:
Global Const $WH_KEYBOARD_LL    = 13

Global $hStub_KeyProc           = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
Global $hMod                    = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0)
Global $hHook                   = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", _
    $WH_KEYBOARD_LL, "ptr", DllCallbackGetPtr($hStub_KeyProc), "hwnd", $hMod[0], "dword", 0)

OnAutoItExitRegister("OnAutoItExit")

$FlagKey = True
$winWidth = @DesktopWidth  ; ширина окна
$winHeight = @DesktopHeight ; высота окна
$valTimer =  10000 ; значение таймера опроса по умолчанию 

$M_Y = $winHeight / 2
$M_X = $winWidth / 2


MouseMove($M_X, $M_Y, 0)  ; начальная позиция

While 1
   
    $aDefPos = MouseGetPos()
    If ( $M_X = $aDefPos[0] ) And ( $M_Y = $aDefPos[1] ) And Not $FlagKey  Then
   
        MouseMove(Random(5, $winWidth - 5, 1), Random(5, $winHeight - 5, 1), Random(5, 95, 1))
        $FlagKey = False
       
        $aDefPos = MouseGetPos()
        $M_X = $aDefPos[0]
        $M_Y =  $aDefPos[1]
       
        Sleep($valTimer)
       
    Else

        $FlagKey = False
        $aDefPos = MouseGetPos()
        $M_X = $aDefPos[0]
        $M_Y =  $aDefPos[1]
       
        Sleep($valTimer * 3)
                
    EndIf
       
WEnd

Func _KeyProc($nCode, $wParam, $lParam)
       $FlagKey = True
EndFunc

Func OnAutoItExit()

    If $hStub_KeyProc Then DllCallbackFree($hStub_KeyProc)
    $hStub_KeyProc = 0
    DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hHook[0])
   
EndFunc
 
Верх