显示器关闭时使 HTPC 进入睡眠状态

显示器关闭时使 HTPC 进入睡眠状态

我希望我的电脑在关闭电视时自动进入睡眠状态。如何实现?如果可能的话,我还希望电视在打开时也能打开

计算机 - Windows 8.1 Gigabyte B85 GTX 650

答案1

这实际上通过一些脚本或编码就可以实现。

有一个WMI Win32_DesktopMonitor 类它有一个名为“可用性”的属性。

可用性属性列出了显示器可能处于的 17 种状态。您可能想要检查 0x03 的值(正在运行或全功率)。但是,您必须尝试使用​​电视的返回值来确定最佳值。

可以编写脚本或程序以您选择的频率运行,检测电视的状态,然后如果检测到电视已关闭,则向操作系统发送睡眠命令。

答案2

扩展 Keltari 的评论,以下 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 分钟内)。

相关内容