Suspender HTPC quando o monitor está desligado

0

Eu gostaria que meu computador automaticamente dormisse quando eu desligasse a TV. Como pode ser isto alcançado? Eu também gostaria que o HTPC ligasse quando a TV fosse ligada, se possível

Computador Windows 8.1 Gigabyte B85 GTX 650

    
por Silicabello 07.09.2015 / 20:46

2 respostas

0

Isso realmente deve ser possível com algum script ou codificação.

Existe uma classe WMI Win32_DesktopMonitor que tem uma propriedade chamada "Disponibilidade".

A propriedade de disponibilidade lista 17 estados possíveis nos quais o monitor pode estar. Você provavelmente desejará verificar o valor de 0x03 (Em execução ou Potência total). No entanto, você teria que jogar com os valores de retorno da sua TV para ver o que há de melhor.

Um script ou programa pode ser escrito para rodar na freqüência que você escolher, detectar o estado da TV e depois enviar um comando sleep para o sistema operacional se detectar que a TV está desligada.

    
por 07.09.2015 / 20:57
0

Expandindo o comentário de Keltari, os loops VBScript a seguir e cada segundo informa se a tela está ou não ligada.

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

Você deve salvá-lo (por exemplo, como screenstatus.vbs ) e executá-lo a partir da linha de comando usando cscript screenstatus.vbs ).

Se tudo correr bem, então "True" será exibido a cada segundo e quando você desligar a tela, ele irá virar para "False". Você obviamente precisará ligar a tela para checar isso!

Supondo que tudo corra bem, você pode alterar o loop na parte superior para algo como:

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

e, em seguida, agende o script para ser executado regularmente (por exemplo, a cada 15 minutos).

A sua máquina não irá dormir imediatamente, mas desligará na próxima vez que o script for executado (o que, no exemplo que forneci, estará dentro de 15 minutos).

    
por 24.08.2017 / 11:32

Tags