Добрый день.
Сделал скрипт отслеживающий неактивность юзера по перемещению мыши или работе на клавиатуре. Т.е., если пользователь ничего не делает в течении секунд 30 - 40 , скрипт начинает сам перемещать курсор мыши по случайным координатам экрана. Как только снова юзер двинул мышь или нажал что-то на клавиатуре , программа переходит в режим ожидания и не мешает пользователю. Механизм отслеживания нажатий на клавиатуре через Win API подсмотрел в одной из программ CreatoR , за что ему спасибо. Цель программы на давать запуститься сэйв скрину на корпоративном ПК.
Не нашел как отслеживать нажатия левой , правой и прочих кнопок на самой мыши. Если мышь не перемещать , а только нажимать кнопки на ней, скрипт "перехватит" управления на себя.
Подскажите как отслеживать нажатия кнопок мыши.
Версия AutoIt : 3.3.14.5
OS : Windows 10 Pro
Сделал скрипт отслеживающий неактивность юзера по перемещению мыши или работе на клавиатуре. Т.е., если пользователь ничего не делает в течении секунд 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