我一直在使用nircmd关闭各种电脑的显示器/显示屏,如下所示:
nircmd.exe cmdwait 1000 monitor off
该cmdwait 1000
部件只是在关闭显示屏之前增加了 1 秒的延迟(让最后一次击键和鼠标移动结束)。这已经起作用 10 多年了。
我刚刚遇到一台 Win10 PC,它实际上通过此命令进入睡眠状态,而不是关闭显示器。这可能是什么原因造成的,如何解决?
有问题的 PC 是 ASUS Zenbook。如果需要更多信息,请告诉我。
更新:我还尝试通过 powershell 调用这个 WinAPI 来关闭显示器,这也导致 PC 进入睡眠状态:
(Add-Type -MemberDefinition "[DllImport(""user32.dll"")]`npublic static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);" -Name "Win32SendMessage" -Namespace Win32Functions -PassThru)::SendMessage(0xffff, 0x0112, 0xF170, 2)
答案1
我迫切需要一个黑客手段来实现同样的目标。
自 Windows 10 以来,情况发生了变化。现在,微软不允许简单地关闭屏幕!实际上,在我使用的任何 Windows 版本中,Windows 中的电源管理都无法正常工作,现在他们故意让这种情况雪上加霜。
微软的技术支持对此毫无帮助。请参阅我昨天与他们的长谈: https://docs.google.com/document/d/15LmihHAiiWgJQsE2Y_kafURWFfGQ82ekmtXH-WD0xHM/edit?usp=sharing
对于会编程的人来说,处理 WM_POWERBROADCAST 等系统电源管理消息可能是一种解决方法/解决方案。但是,到目前为止,当我通过“nircmd.exe monitor async_off”或 SendMessage 命令发出关闭显示器的命令时,我未能检测到该消息。
也可以看看: https://docs.microsoft.com/en-us/windows/win32/power/system-power-states
睡眠(现代待机)S0 低功耗空闲
https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby “Windows 10 现代待机 (Modern Standby) 扩展了 Windows 8.1 连接待机电源模型。连接待机以及随之而来的现代待机可实现即时开启/即时关闭的用户体验,类似于智能手机电源模型。”
[这里的“即时开启”是谎言。我在一台非常昂贵的笔记本电脑上遇到了 2 秒的延迟。此外,当笔记本电脑显示器关闭时,Win11 也会关闭大多数其他活动,例如正在运行的脚本、下载等!从什么时候开始“显示器关闭”的定义意味着让整个计算机进入睡眠/待机状态?微软是在嘲笑我们吗?]
答案2
关闭监视器
我在 Windows10x64 上,按照此处描述的快捷方式进行操作视频在职的
右键单击>新快捷方式粘贴:
powershell.exe -Command "(Add-Type '[DllImport("user32.dll")]public static extern int SendMessage(int hWnd,int hMsg,int wParam,int lParam);' -Name a -Pas)::SendMessage(-1,0x0112,0xF170,2)"
防止计算机进入睡眠状态
你得走了控制面板> 电源选项 > 更改计算机睡眠时间 > 选择绝不让计算机进入睡眠状态
如果由于某种原因,这些不起作用,请在谷歌上搜索mouse jiggler