KeepWindow

CI Latest release License

KeepWindow 是一个 Windows 窗口防误关闭工具。它通过系统菜单保护标准标题栏,也可以用鼠标遮罩拦截自绘标题栏的关闭按钮。

KeepWindow 主界面:窗口列表、保护状态与遮罩参数设置

功能

安装

从 Releases 下载最新的 Windows x64 压缩包,解压后运行 keep-window.exe。

运行要求:Windows 10 1703 或更新版本,x64。目标程序以管理员身份运行时,KeepWindow 也可能需要以管理员身份运行。

快速使用

  1. 在窗口列表中选择目标,或点击“选择窗口”后单击目标窗口。
  2. 标准标题栏启用“系统保护”;自绘标题栏启用“鼠标遮罩”,也可以同时启用。
  3. 点击“开启保护”。使用鼠标遮罩时,确认覆盖区域对准关闭按钮,必要时点击“校准”。
  4. 修改参数后点击“应用”;完成后点击“解除保护”恢复窗口。

关闭或最小化主界面、按 Alt+F4 都只会隐藏 KeepWindow,保护会继续运行。也可以直接启动到后台:

.\keep-window.exe --background

应用规则

在选中窗口并设置保护方式后,展开“规则”并保存即可。规则支持以下匹配条件:

规则默认不自动保护新窗口,可在“更多 → 应用规则管理”中编辑、启用、禁用或删除。

配置文件位于:

%LOCALAPPDATA%\KeepWindow\config.json

恢复与日志

系统关闭项修改前会写入恢复记录。KeepWindow 正常退出时清理记录;异常退出后再次启动,会校验窗口句柄、进程身份、完整路径和窗口属性,只恢复能够安全匹配的窗口。

无法安全匹配的记录会保留为残留文件,损坏的恢复记录会先备份。恢复失败项会保留,供下一次启动重试。鼠标遮罩随 KeepWindow 进程退出而消失,不参与恢复。

后台启动错误记录在:

%LOCALAPPDATA%\KeepWindow\startup-error.log

限制

从源码构建

需要 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

许可证

MIT License

交互思路参考 PettterWang/NOCLOSE。