VelDmi,
Цитата:
при любом шевелении мышкой или клавиатурой монитор включается!
|
Можно попробовать это обойти проверокой на ввод пользователя:
Код:
#NoTrayIcon
Opt("WinTitleMatchMode", 4)
Global $MonitorIsOff = False
HotKeySet("{F11}", "Monitor_Off")
HotKeySet("{F10}", "Monitor_On")
HotKeySet("{Esc}", "Quit")
While 1
Sleep(10)
WEnd
Func Quit()
Monitor_On()
Exit
EndFunc
Func Monitor_On()
Local $hwnd = WinGetHandle('classname=Progman')
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hwnd, 'int', 274, 'int', 61808, 'int', -1)
$MonitorIsOff = False
EndFunc
Func Monitor_Off()
$MonitorIsOff = True
Local $hwnd = WinGetHandle('classname=Progman')
While $MonitorIsOff = True
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hwnd, 'int', 274, 'int', 61808, 'int', 2)
Sleep(10)
_IdleWaitCommit(0)
WEnd
EndFunc
Func _IdleWaitCommit($idlesec)
Local $iSave, $LastInputInfo = DllStructCreate ("uint;dword")
DllStructSetData ($LastInputInfo, 1, DllStructGetSize ($LastInputInfo))
DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
Do
$iSave = DllStructGetData ($LastInputInfo, 2)
Sleep(100)
DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
Until (DllStructGetData ($LastInputInfo, 2)-$iSave) > $idlesec Or $MonitorIsOff = False
Return DllStructGetData ($LastInputInfo, 2)-$iSave
EndFunc
Просто по запуску скрипта нажми F11, монитор выключится, при каждом вводе (м клавиатуры или мышки) монитор будет отключаться по новой, для включения монитора нужно нажать F10, для полного выхода со скрипта ESC.
При этом любые сочетания клавиш действуют как обычно.
Это конечно не то что требуется, наверняка(?) можно полностью выключить монитор, но это тоже решение