English documentation: README.en.md.
KeepWindow 是一个 Windows 窗口防误关闭工具。它通过系统菜单保护标准标题栏,也可以用鼠标遮罩拦截自绘标题栏的关闭按钮。
- 系统关闭保护:禁用目标窗口系统菜单中的“关闭”项。
- 鼠标遮罩:覆盖自绘标题栏关闭按钮,支持 DPI 缩放、移动、调整大小和校准。
- 应用规则:按程序路径、窗口类名和可选标题关键词自动匹配窗口。
- 后台驻留:隐藏主界面后继续保护,可从系统托盘返回或退出。
- 安全恢复:记录保护前的状态;异常退出后,重新启动时恢复身份匹配的窗口。
- 准星选窗与开机启动:快速定位窗口,也可选择登录后后台运行。
从 Releases 下载最新的 Windows x64 压缩包,解压后运行 keep-window.exe。
运行要求:Windows 10 1703 或更新版本,x64。目标程序以管理员身份运行时,KeepWindow 也可能需要以管理员身份运行。
- 在窗口列表中选择目标,或点击“选择窗口”后单击目标窗口。
- 标准标题栏启用“系统保护”;自绘标题栏启用“鼠标遮罩”,也可以同时启用。
- 点击“开启保护”。使用鼠标遮罩时,确认覆盖区域对准关闭按钮,必要时点击“校准”。
- 修改参数后点击“应用”;完成后点击“解除保护”恢复窗口。
关闭或最小化主界面、按 Alt+F4 都只会隐藏 KeepWindow,保护会继续运行。也可以直接启动到后台:
.\keep-window.exe --background在选中窗口并设置保护方式后,展开“规则”并保存即可。规则支持以下匹配条件:
- 完整程序路径:不区分大小写。
- 窗口类名:精确匹配。
- 标题关键词:可选,不区分大小写;多条规则同时命中时,带标题条件的规则优先。
规则默认不自动保护新窗口,可在“更多 → 应用规则管理”中编辑、启用、禁用或删除。
配置文件位于:
%LOCALAPPDATA%\KeepWindow\config.json
系统关闭项修改前会写入恢复记录。KeepWindow 正常退出时清理记录;异常退出后再次启动,会校验窗口句柄、进程身份、完整路径和窗口属性,只恢复能够安全匹配的窗口。
无法安全匹配的记录会保留为残留文件,损坏的恢复记录会先备份。恢复失败项会保留,供下一次启动重试。鼠标遮罩随 KeepWindow 进程退出而消失,不参与恢复。
最近事件仅保存在内存中,最多保留 200 条。打开“最近事件与诊断”后,可复制诊断信息,或点击“导出诊断”在 Windows 保存对话框中选择文本文件。默认省略窗口标题、路径与完整错误;勾选“诊断包含标题、路径与完整错误”后,复制和导出均包含这些内容。
后台启动错误记录在:
%LOCALAPPDATA%\KeepWindow\startup-error.log
- 系统关闭保护依赖目标程序遵守 Windows 系统菜单状态,自绘标题栏可能绕过它。
- 鼠标遮罩只拦截覆盖区域内的鼠标点击,并且仅在目标窗口可见且位于前台时显示。
Alt+F4、程序自己的退出命令、自定义快捷键、直接发送关闭消息或结束进程不受鼠标遮罩保护。- 目标窗口已关闭、重建或无法验证身份时,恢复操作会跳过该窗口。
需要 Rust stable MSVC 工具链、Visual Studio Build Tools 的“使用 C++ 的桌面开发”组件和 Windows SDK。
git clone https://github.com/NeterAlex/KeepWindow.git
cd KeepWindow
cargo build --release
.\target\release\keep-window.exe提交前建议运行:
cargo fmt --check
cargo clippy --locked --all-targets --all-features -- -D warnings
cargo test --locked --all-targets --all-features -- --test-threads=1交互思路参考 PettterWang/NOCLOSE。