Спящий HTPC, когда монитор выключен

245
Silicabello

Я хотел бы, чтобы мой компьютер автоматически спал, когда я выключал телевизор. Как это можно сделать? Я также хотел бы, чтобы htpc включался при включении телевизора, если это возможно

Компьютер - Windows 8.1 Gigabyte B85 GTX 650

0
Под "тв" ты имеешь ввиду монитор? Xavierjazz 8 лет назад 0
Это htpc, поэтому он подключен к телевизору Silicabello 8 лет назад 0

2 ответа на вопрос

0
Keltari

This actually should be possible with some scripting or coding.

There is a WMI Win32_DesktopMonitor class that has an property called "Availability."

The availability property lists 17 possible states the monitor can be in. You will probably want want to check for the value of 0x03 (Running or Full Power). However, you would have to play with the returning values from your TV to see what is best.

A script or program can be written to run at a frequency you choose, detect the state of the TV, then send a sleep command to the OS if it detects the TV is off.

Я в первую очередь пользователь OSX / Linux, вы можете разработать, что необходимо для сценария в Windows? Silicabello 8 лет назад 0
VBScript или PowerShell - сценарии, встроенные в Windows. или если вы хотите написать настоящую программу, вы можете скачать Visual Studio Express бесплатно Keltari 8 лет назад 0
0
Richard

Расширяя комментарий Келтари, следующие циклы VBScript и каждую секунду сообщают, включен экран или нет.

Do WScript.Sleep 1000 WScript.Echo "Screen is on = " & ScreenOn Loop  Function ScreenOn()  Dim objWMIService, colItems, objItem  On Error Resume Next  Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor",,48) ScreenOn = False  For Each objItem in colItems If objItem.Availability = 3 Then ScreenOn = True Exit For End If Next  On Error Goto 0  End Function 

Вы должны сохранить его (например, как screenstatus.vbs) и запустить его из командной строки, используя cscript screenstatus.vbs).

Если все идет хорошо, то «True» будет отображаться каждую секунду, а когда вы выключите экран, он переключится на «False». Вам, очевидно, нужно будет включить экран, чтобы проверить это дважды!

Предполагая, что все идет хорошо, вы можете изменить цикл вверху на что-то вроде:

If ScreenOn() = False Then ' Call command here to sleep computer End If 

а затем запланируйте выполнение сценария на регулярной основе (например, каждые 15 минут).

Ваша машина не сразу перейдет в спящий режим, но выключится при следующем запуске сценария (который, как я привел в примере, будет через 15 минут).