根据命令关闭 Windows 中的显示

uni*_*oio 83 windows windows-7 display command-line

有没有办法关闭 Windows (7) 中的显示,最好不使用其他软件?

Powershell 脚本工作正常,但在打开显示器后离开命令行窗口。

Gre*_*reg 48

在笔记本电脑上,您可以使用 Fn+F7 的键盘快捷键组合(F7 可能因笔记本电脑型号而异),而对于台式机,您始终可以使用电源按钮。

您是否需要任何其他规范,例如在鼠标移动时唤醒或其他什么?

您始终可以创建快捷方式并将键盘快捷方式分配给黑色屏幕保护程序,请使用以下路径:

%systemroot%\system32\scrnsave.scr /s
Run Code Online (Sandbox Code Playgroud)

这不会关闭您的屏幕,而是使其完全变黑

  • @unicoio 如果要整夜关闭屏幕,为什么不使用屏幕本身的电源按钮? (3认同)
  • 在 Windows 10 中,当在搜索框或运行对话框中输入 `scrnsave.scr` 时,屏幕会变黑,但在从 `cmd.exe` 执行时需要 `/s`(如果没有它,会弹出一个对话框,通知这屏幕保护程序没有可配置的选项)。 (3认同)
  • 我有台式机,据我所知,无法设置电源按钮来关闭显示。唤醒鼠标移动或键盘键很好。黑色屏幕保护程序叶子发光,在夜间可见。 (2认同)
  • `/s` 是做什么用的,不用开关也能工作。 (2认同)

小智 40

还有几个选择:

  • 关闭 LCD - 只需将可执行文件放在桌面上
  • NirCmd - 您需要将 nircmd.exe 复制到您的 Windows 系统目录,或将其位置添加到 PATH 环境变量中。然后只需从命令行运行nircmd monitor off。更多信息请见链接。

  • +1 为 `nircmd`。Nir Sofer 和 Russinovich 的 Imho 工具集应该安装在任何高级用户的 PC 上。 (12认同)
  • 对于 nircmd,我必须使用“nircmd monitor async_off”,否则关闭监视器后它不会退出。 (2认同)

Ujj*_*ngh 33

您可以使用WinAPI 调用 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2)where HWND_BROADCAST = 0xFFFFWM_SYSCOMMAND = 0x0112SC_MONITORPOWER = 0xF170。该2装置的显示被切断。

有几种方法可以拨打电话:

  • 单独的可执行文件。您可以通过脚本、命令行、运行窗口、快捷方式 ( *.lnk) 等来启动它。请注意,可以使用键盘快捷方式调用快捷方式。可执行文件可以用 C 或 C++ 编写,或者通过 .NET 语言(C# 或PowerShell)中的P/Invoke 编写,或者使用具有外语接口的许多其他语言(例如 Java 中的 JNI)编写。

  • AutoHotkey脚本对于非程序员来说,这种方式可能更简单。进行自定义仍然需要一些脚本。此脚本在 Win + M 上关闭监视器:

    #m::
    Sleep 1000
    SendMessage, 0x112, 0xF170, 2,, Program Manager
    return
    
    Run Code Online (Sandbox Code Playgroud)

请注意SendMessageAutoHotkey 脚本中调用之前的超时。它让用户有机会释放按键(以防它们的释放会再次唤醒显示器)。即使在使用另一种语言的脚本进行调用时也不要忘记它。

有关更多信息,请参阅SendMessagefunctionWM_SYSCOMMANDmessageAutoHotkeySendMessage的文档。有趣的是,自 Windows 8 以来,使用相同的方法打开监视器不起作用,但有一个变通方法。


Jar*_*kia 14

Powershell one-liner 将是:

(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)
Run Code Online (Sandbox Code Playgroud)

  • 这很接近,但对我不起作用(Win10)。但是我把它放到一个 .bat 文件中并且它工作了:`powershell (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)` (2认同)
  • 这在我的 Windows 10 20H2 计算机上不起作用。单行代码将使整个计算机休眠。NirCMD 也有同样的问题。one-liner 和 NirCMD 在 Windows 7 计算机上运行。 (2认同)
  • 我已经在我的几台计算机上测试了 PowerShell 单线。按预期工作。鉴于您是第一个报告计算机休眠的人,我不得不假设这是联想的问题。 (2认同)