Skip to content

About

关屏助手:按一下快捷键只关闭显示器(不睡眠、不锁屏),常驻托盘,支持自定义快捷键与开机自启

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

关屏助手 · ScreenOffHotkey

按一下快捷键,只关显示器——不睡眠、不锁屏、不中断后台任务。动一下鼠标或按任意键就重新亮屏。

一个基于 .NET Framework 4 的 WinForms 小工具,编译出来是单个 exe,免安装、无依赖,常驻系统托盘。

托盘菜单 自定义快捷键

功能

  • 全局快捷键关屏,默认 Ctrl+Alt+Shift+J
  • 四条独立的按键检测通道,尽量保证在输入法、全屏游戏、远程桌面等环境下也能触发
  • 托盘常驻图标,右键菜单搞定所有操作
  • 自定义快捷键:弹出对话框,直接按下新组合键即可改键,立刻生效
  • 开机自动启动开关
  • 详细日志开关,按键没反应时方便排查
  • 程序已在运行时,再次双击桌面图标 = 立即关屏

托盘菜单

菜单项 作用
关闭屏幕 立即关屏
自定义快捷键… 弹出对话框,按下新组合键后保存
开机自动启动 勾选后写入启动文件夹快捷方式
记录详细日志 写入 verbose.flag,记录每次按键的判定过程
打开程序所在文件夹 在资源管理器中定位到 exe
查看运行日志 打开 hotkey.log
把图标固定到任务栏托盘区 把托盘图标提升为常显
使用说明 打开 README.txt
退出 结束常驻

托盘图标 左键双击 = 关屏。

快捷键规则

  • 必须包含 Ctrl / Alt / Shift / Win 中的至少一个,避免和平时打字冲突。
  • 支持的键位:
    • 字母 A–Z、数字 0–9
    • 功能键 F1–F24
    • 小键盘 Num0–Num9
    • 方向键、Home End Insert Delete PageUp PageDown PrtSc Space Tab Enter
    • 符号键 - = [ ] \ ; ' , . /
    • 0xNN 形式的虚拟键码
  • 对话框里的「恢复默认」可还原为 Ctrl+Alt+Shift+J。

也可以直接手改程序目录下的 hotkey.ini(整个文件就是一行快捷键),改完重启程序生效:

Ctrl+Alt+Shift+J
Ctrl+Alt+K
Win+Shift+F5

写错的话程序会自动退回默认值,并在 hotkey.log 里记一笔。

按键检测机制

为了对付「在某个程序里按了没反应」这种情况,同时挂四条通道,任一命中即触发:

  1. RegisterHotKey —— 系统级全局热键
  2. 底层键盘钩子 WH_KEYBOARD_LL
  3. Raw Input(WM_INPUT)
  4. 按键状态轮询(80 ms 定时器)

关屏原理

给命令行窗口发送 WM_SYSCOMMAND + SC_MONITORPOWER:

SendMessage(hwnd, WM_SYSCOMMAND /* 0x0112 */, SC_MONITORPOWER /* 0xF170 */, (IntPtr)2);

其中 2 = 显示器断电,1 = 低功耗,-1 = 打开。该调用只作用于显示器,不会让系统进入睡眠,也不会锁屏。

编译

需要 .NET Framework 4.x(Windows 自带 csc.exe,无需装 Visual Studio)。

build.cmd

等价的命令行:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe `
  /nologo /target:winexe /platform:anycpu /optimize+ `
  /out:build\ScreenOffHotkey.exe `
  /win32icon:build\ScreenOffHotkey.ico `
  /win32manifest:build\app.manifest `
  /r:System.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /r:System.Core.dll /r:Microsoft.CSharp.dll `
  src\ScreenOffHotkey.cs

安装 / 卸载

安装:双击 安装关屏热键.cmd(实际执行 install-screenoff.ps1)。它会

  1. 把 exe 复制到 %LOCALAPPDATA%\ScreenOff
  2. 在桌面创建「关屏助手」快捷方式
  3. 在启动文件夹创建开机启动快捷方式
  4. 立即启动程序

卸载:托盘图标 → 退出,然后删掉 %LOCALAPPDATA%\ScreenOff 文件夹,以及启动文件夹里的 ScreenOffHotkey.lnk。

项目结构

文件 说明
src/ScreenOffHotkey.cs 主程序:托盘图标、四条热键通道、自定义快捷键对话框
src/HookProbe.cs 键盘钩子诊断小工具(排查按键收不到时用)
build/app.manifest DPI 感知与受支持 OS 声明
build/ScreenOffHotkey.ico 程序图标
install-screenoff.ps1 安装脚本
安装关屏热键.cmd 双击安装入口
build.cmd 一键编译脚本

程序运行时会在自己所在目录生成:hotkey.ini(快捷键配置)、hotkey.log(运行日志)、verbose.flag(详细日志开关)。

许可

MIT

About

关屏助手:按一下快捷键只关闭显示器(不睡眠、不锁屏),常驻托盘,支持自定义快捷键与开机自启

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages