我希望我的电脑在关闭电视时自动进入睡眠状态。如何实现?如果可能的话,我还希望电视在打开时也能打开
计算机 - 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 分钟内)。