Для этого я создал небольшой скрипт AutoIt. Он работает в цикле, периодически проверяя значение функции _Timer_GetIdleTime()
из Timers.au3
, если оно становится больше определенного времени, сценарий выполняет tsdiscon.exe
и компьютер выходит на экран приветствия.
Вот код, который я использовал:
#include <Timers.au3>
const $setpoint = 900000 ; switch by idle time setpoint 900000 ms = 15 minutes
const $interval = 60000 ; check interval 60000 ms = 1 minute
const $tsdisconpath = "C:\WINDOWS\System32\tsdiscon.exe" ; specify the actual path for your OS, this might need to be changed
; eg on my Win 7 HB x64 the file full path is C:\WINDOWS\winsxs\amd64_microsoft-windows-t..es-commandlinetools_31bf3856ad364e35_6.1.7601.17514_none_42d65ed50fa3c682\tsdiscon.exe
$disconnected = false
$idle = 0
while true
$prev = $idle
$idle = _Timer_GetIdleTime()
if $disconnected and $prev > $idle then ; user has logged in again
$disconnected = false ; reset state
endif
if $idle > $setpoint and not $disconnected then
run($tsdisconpath, "") ; exit to welcome screen
sleep(10000)
$disconnected = true
$idle = 0
endif
sleep($interval)
wend
Вы должны указать фактический путь к файлу tsdiscon.exe
для вашей ОС. Я скомпилировал этот код для exe с Aut2Exe (он доступен как в полной установке, так и в переносимом AutoIt) и установил автозапуск. Версия AutoIt была 3.3.8.1.
Если вы хотите выйти на экран блокировки вместо экрана приветствия, используйте
const $tsdisconpath = "RunDll32.exe user32.dll,LockWorkStation
Муха в мази. Я должен сказать о мелких недостатках сценария, с которым вы можете столкнуться. Обычно вы не касаетесь мыши и клавиатуры во время просмотра фильмов, поэтому сценарий неожиданно завершает работу с заданным значением и фильм продолжит воспроизведение. Также я заметил, что когда я просыпаюсь после гибернации компьютера и захожу в систему, по какой-то причине скрипт обнаруживает, что время истекло, и выходит.