如何实现插拔HDMI外接显示器时自动切换笔记本合盖睡眠的控制面板设置?
如何实现插拔HDMI外接显示器时自动切换笔记本合盖睡眠的控制面板设置?
嘿,这个需求太实用了!我来给你分享两个靠谱的实现方案,都是Windows平台下的,你可以根据自己的偏好选择:
方案一:原生PowerShell脚本+任务计划程序(无需额外软件)
这是最稳妥的原生方案,不用装任何第三方工具,步骤也不算复杂:
第一步:编写自动切换的PowerShell脚本
- 打开记事本,把下面的代码复制进去:
# 获取当前激活的显示器数量 $activeDisplays = Get-CimInstance -Namespace root/wmi -ClassName WmiMonitorBasicDisplayParams | Where-Object { $_.Active -eq $true } $displayCount = $activeDisplays.Count # 定义合盖动作:0=无操作,1=睡眠,2=休眠,3=关机 $noAction = 0 $sleepAction = 1 # 修改电源设置(同时覆盖电源适配器和电池两种场景) if ($displayCount -gt 1) { # 外接显示器已连接:合盖时不执行任何操作(不会睡眠) powercfg /setacvalueindex SCHEME_CURRENT 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 $noAction powercfg /setdcvalueindex SCHEME_CURRENT 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 $noAction } else { # 外接显示器已断开:合盖时自动睡眠 powercfg /setacvalueindex SCHEME_CURRENT 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 $sleepAction powercfg /setdcvalueindex SCHEME_CURRENT 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 $sleepAction } # 立即应用更改 powercfg /s SCHEME_CURRENT
- 点击“文件-另存为”,保存类型选“所有文件”,文件名设为
LidSleepToggle.ps1,记住保存的路径(比如C:\Scripts\LidSleepToggle.ps1)。
第二步:设置任务计划程序自动触发脚本
这个步骤是让系统在显示器插拔时自动运行上面的脚本:
- 按下Win+S,搜索“任务计划程序”并打开它。
- 点击右侧的“创建任务”,填写任务名称(比如“自动切换合盖睡眠设置”),然后在“常规”标签里勾选使用最高权限运行(非常重要,不然脚本可能改不了电源设置)。
- 切换到“触发器”标签,点击“新建”:
- 触发器类型选“事件”
- 日志选“系统”,来源选“Display”
- 事件ID填写
2001(对应显示器连接的事件),然后点击确定。 - 再新建一个触发器,同样选“事件”,日志和来源不变,事件ID填写
2002(对应显示器断开的事件),确定保存。
- 切换到“操作”标签,点击“新建”:
- 操作选“启动程序”
- 程序/脚本填
powershell.exe - 添加参数填
-ExecutionPolicy Bypass -File "C:\Scripts\LidSleepToggle.ps1"(把路径换成你刚才保存脚本的实际路径)
- 切换到“条件”标签,取消勾选“只有在计算机使用交流电源时才启动此任务”(如果需要在电池模式下也生效的话)。
- 最后点击“确定”保存任务,这样以后插拔外接显示器时,系统就会自动切换合盖睡眠的设置啦!
方案二:第三方工具简化操作(可选)
如果你觉得脚本和任务计划太麻烦,可以试试一些专门的显示器管理工具,它们自带“事件触发”功能,能在显示器插拔时自动执行预设动作(比如修改合盖睡眠设置)。这类工具通常可视化操作更简单,不过需要你自行下载安装(注意从正规渠道获取哦)。
注意事项
- 测试一下:插好外接显示器后,打开电源选项看看合盖设置是不是变成了“不采取任何操作”,断开后是不是变回“睡眠”,如果没生效,检查任务计划的权限和脚本路径是否正确。
- 如果你只想在接电源时切换设置,可以修改脚本里的
setacvalueindex和setdcvalueindex,只保留其中一个即可。
备注:内容来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

