KingShift
14-04-2018, 15:23
Добрый день, нужно реализовать отключение компьютера через 1 час бездействия в конце рабочего дня. Занес в планировщик на запуск от имени администратора, так как эта УЗ может входить в качестве пакетного задания. Иначе код не будет выполнятся если выйти из системы.
#include <Date.au3>
$idlesec = 3600000
Local $aRet, $iSave, $LastInputInfo = DllStructCreate ("uint;dword")
DllStructSetData ($LastInputInfo, 1, DllStructGetSize ($LastInputInfo))
DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
Do
Sleep(200)
$iSave = DllStructGetData ($LastInputInfo, 2)
DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
$aRet = DllCall ("kernel32.dll", "long", "GetTickCount")
Until ($aRet[0] - $iSave) > $idlesec
ConsoleWrite (_Now () & ' Выключение компьютера.' & @CRLF)
;Shutdown(1)
Беда в том, что он отслеживает бездействие УЗ администратора, а не пользователя(то есть УЗ которая его запустила). А нужно чтоб отслеживал время бездействия(движение мыши, нажатия клавиатуры) всех пользователей. Как это реализовать?
#include <Date.au3>
$idlesec = 3600000
Local $aRet, $iSave, $LastInputInfo = DllStructCreate ("uint;dword")
DllStructSetData ($LastInputInfo, 1, DllStructGetSize ($LastInputInfo))
DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
Do
Sleep(200)
$iSave = DllStructGetData ($LastInputInfo, 2)
DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
$aRet = DllCall ("kernel32.dll", "long", "GetTickCount")
Until ($aRet[0] - $iSave) > $idlesec
ConsoleWrite (_Now () & ' Выключение компьютера.' & @CRLF)
;Shutdown(1)
Беда в том, что он отслеживает бездействие УЗ администратора, а не пользователя(то есть УЗ которая его запустила). А нужно чтоб отслеживал время бездействия(движение мыши, нажатия клавиатуры) всех пользователей. Как это реализовать?