注意: 此技巧需要PowerShell 2.0或者更高版本支持。
这周我在PowerShell论坛中遇到一个纠结的问题,一个用户询问怎么使用命令关闭它机器上的显示器。我没搞懂它的意图,但是我猜这家伙可能想看恐怖电影,屏幕的闪烁影响他的体验,或者极有可能他想让自己的笔记本尽可能地省电。无论怎样我在网上搜索之后,整理出了下面的脚本:
# 调用WindowsAPI 关闭显示器 # SendMessage(HWND_BROADCAST,WM_SYSCOMMAND, SC_MONITORPOWER, POWER_OFF) # HWND_BROADCAST 0xffff # WM_SYSCOMMAND 0x0112 # SC_MONITORPOWER 0xf170 # POWER_OFF 0x0002 Add-Type -TypeDefinition ' using System; using System.Runtime.InteropServices; namespace Utilities { public static class Display { [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SendMessage( IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam ); public static void PowerOff () { SendMessage( (IntPtr)0xffff, // HWND_BROADCAST 0x0112, // WM_SYSCOMMAND (IntPtr)0xf170, // SC_MONITORPOWER (IntPtr)0x0002 // POWER_OFF ); } } } '
脚本使用Add-Type命令定义一个静态的类Utilities.Display。类中定义了可以用来调用关闭显示器的公有方法PowerOff()。运行上面的脚本(没有输出)先定义类,然后就可以使用下面的脚本关闭显示器了。
[Utilities.Display]::PowerOff()
如果把它包装成一个PowerShell函数Switch-DisplayOff,这样可以方便调用和查找命令:
function Switch-DisplayOff { [Utilities.Display]::PowerOff() }
现在就可以在你的PowerShell会话中使用了,如果决定把它放置在你的$profile中,同样请确保整个类型的定义也包含其中。
荔非苔注:这里所说的关闭显示器是关闭机器向显示器发送信号,有的显示器在未收到信号超时后会自动关闭。如果信号关闭后可以按键盘任意键唤醒。唤醒有个过程,不要着急,又不是抢火车票,按一次就够了。
原文作者:Jakub Jareš
原文链接:How to switch off display with PowerShell
翻译:荔非苔
本文链接: https://www.pstips.net/how-to-switch-off-display-with-powershell.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
无需管理权限,好!
在linux下不过就是一行xset dpms force off 强烈要求win集成这类功能