本文目录导读:

我来介绍几种自动关屏的实现方法,根据使用场景选择适合的方案:
Windows 系统(多种方式)
PowerShell 脚本
# 立即关闭屏幕
Add-Type -TypeDefinition 'using System; using System.Runtime.InteropServices; public class Monitor { [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); }'
$monitor = New-Object Monitor
[Monitor]::SendMessage([IntPtr]0xFFFF, 0x0112, [IntPtr]0xF170, [IntPtr]2)
# 定时关屏(60秒后)
Start-Sleep -Seconds 60
[Monitor]::SendMessage([IntPtr]0xFFFF, 0x0112, [IntPtr]0xF170, [IntPtr]2)
CMD 批处理
@echo off
:: 使用 nircmd 工具(需下载)
nircmd.exe monitor off
:: 或者使用 PowerShell 调用
powershell -command "Add-Type -TypeDefinition 'using System; using System.Runtime.InteropServices; public class M { [DllImport(\"user32.dll\")] public static extern int SendMessage(IntPtr h, int m, IntPtr w, IntPtr l); }'; [M]::SendMessage([IntPtr]0xFFFF, 0x0112, [IntPtr]0xF170, [IntPtr]2)"
Python 脚本
import ctypes
import time
def turn_off_monitor():
"""Windows下关闭显示器"""
ctypes.windll.user32.SendMessageW(0xFFFF, 0x0112, 0xF170, 2)
def schedule_off(seconds):
"""定时关屏"""
time.sleep(seconds)
turn_off_monitor()
if __name__ == "__main__":
# 5分钟后关屏
schedule_off(300)
Linux 系统
Shell 脚本
#!/bin/bash # 立即关闭屏幕(DPMS 方式) xset dpms force off # 10分钟后关闭 sleep 600 && xset dpms force off # 或使用 vbetool(适合无电源管理的显示器) vbetool dpms off
使用 systemd 定时器
创建定时任务文件 ~/.config/systemd/user/screen-off.service:
[Unit] Description=Turn off screen [Service] Type=oneshot ExecStart=/usr/bin/xset dpms force off
macOS 系统
AppleScript
-- 立即关闭显示器
tell application "System Events"
key code 144 -- 这是F2键(在某些Mac上可触发关屏)
end tell
-- 或使用 pmset 命令
do shell script "pmset displaysleepnow"
Shell 命令
# 立即睡眠显示器 pmset displaysleepnow # 定时关闭(使用caffeinate避免系统睡眠) sleep 300 && pmset displaysleepnow
跨平台方案(Node.js)
const { exec } = require('child_process');
function turnOffScreen() {
const platform = process.platform;
if (platform === 'win32') {
exec('powershell -command "Add-Type -TypeDefinition \'using System; using System.Runtime.InteropServices; public class M { [DllImport(\"user32.dll\")] public static extern int SendMessage(IntPtr h, int m, IntPtr w, IntPtr l); }\'; [M]::SendMessage([IntPtr]0xFFFF, 0x0112, [IntPtr]0xF170, [IntPtr]2)"');
} else if (platform === 'linux') {
exec('xset dpms force off');
} else if (platform === 'darwin') {
exec('pmset displaysleepnow');
}
}
// 定时执行
setTimeout(turnOffScreen, 5 * 60 * 1000); // 5分钟后
综合方案 - 带条件的自动关屏
import psutil
import ctypes
import time
import platform
class ScreenController:
def __init__(self):
self.system = platform.system()
def is_idle(self, threshold_minutes=5):
"""检查系统是否空闲"""
if self.system == "Windows":
# 可以检查用户空闲时间(需要额外实现)
return True
elif self.system == "Linux":
# 检查CPU使用率
cpu_usage = psutil.cpu_percent(interval=1)
return cpu_usage < 5
return False
def turn_off(self):
"""关闭屏幕"""
if self.system == "Windows":
ctypes.windll.user32.SendMessageW(0xFFFF, 0x0112, 0xF170, 2)
elif self.system == "Linux":
import subprocess
subprocess.run(['xset', 'dpms', 'force', 'off'])
elif self.system == "Darwin":
import subprocess
subprocess.run(['pmset', 'displaysleepnow'])
def auto_off(self, check_interval=60, idle_threshold=300):
"""自动监控并关屏"""
idle_seconds = 0
while True:
if self.is_idle():
idle_seconds += check_interval
if idle_seconds >= idle_threshold:
self.turn_off()
idle_seconds = 0
else:
idle_seconds = 0
time.sleep(check_interval)
# 使用示例
controller = ScreenController()
controller.auto_off()
使用建议
- 简单场景:直接使用系统命令(如
xset、pmset) - 定时需求:使用 cron 或计划任务配合脚本
- 智能检测:结合 CPU 使用率、用户空闲时间等判断
- 远程控制:可以搭建 Web 服务,通过手机控制
如果需要更详细的某个平台的实现方案,或者有特定使用场景,请告诉我具体需求。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播