我有一台无人值守的计算机,基本上全天候在屏幕上运行软件,我希望能够检测显示器是否断电或是否被计算机检测到。
Windows 事件日志似乎具有我所寻找的功能,但据我所知,它不会自动记录此信息。我是否需要编写一个脚本来定期检查并手动将显示状态记录到 Windows 事件日志中?或者它埋在某个地方,而我只是不知道在哪里?
还有其他方法可以记录所连接显示器的状态吗?
谢谢大家!
答案1
Windows 似乎没有记录与显示器相关的电源事件,因此您确实需要编写脚本或程序来检测显示器的状态。
请注意,如果问题在于显示器进入省电模式,则可以通过在电源选项或显示器 OSD 中将其设置为永不休眠来避免这种情况。
要在 PowerShell 中检测主监视器的存在,您可以使用以下表达式:
(Get-WmiObject WmiMonitorID -Namespace root\wmi).Active
程序可以做 报名参加 Power Events 这可能使其能够监听 GUID_MONITOR_POWER_ON 广播消息。
您也可以使用帖子中的代码 如何检查 PC 监视器是否在 Windows 7 中使用任何工具或事件查看器打开或关闭 为了听到 WM_POWERBROADCAST 消息。
这 GetDevicePowerState 函数 可能适用于显示器,但据说不可靠。
Github 或许能给你带来另一个灵感来源 Windows-API-代码包-1.1。
请注意,所有这些方法都有未记录的限制。有些方法可能适用于系统引起的事件,但不适用于手动关闭/打开显示器等。您必须进行测试并查看。
如果你有任何编程问题,正确的论坛是 堆栈溢出。