按快捷键把「当前窗口」一键置顶,窗口四周出现点击穿透的霓虹发光边框; 再按一次同一快捷键,取消置顶、光晕同步消失。支持多窗口同时钉住。
已实测通过:Windows 11(150% 缩放)。 单文件 exe 版(WinTop.exe,10.8 MB)与源码版均通过同一套 15 项端到端自检, 含置顶位校验、覆盖层贴合度(0 像素偏差)、点击穿透、边框像素采样、取消后零残留。
- 双击
WinTop.exe。右下角托盘出现绿色方框小图标,并弹一次气泡提示,即启动成功(主程序不弹窗口,托盘常驻)。 - 直接按
Ctrl + Alt + Space试试:当前窗口立刻置顶并出现绿色发光边框;再按一次取消。 - 如果杀毒软件拦截:这是 PyInstaller 单文件的常见误报,选「信任/允许」即可;实在不行改用源码版(
python win_topmost.py)。 - 如果提示「已经在运行了」:说明之前开过一份(或开机自启已拉起),不用再开。
- 想关掉:
Ctrl + Alt + Q,被钉住的窗口会全部恢复原层级。
快捷键速查
| 快捷键 | 作用 |
|---|---|
Ctrl + Alt + Space |
置顶 / 取消置顶 当前窗口(同键双态切换) |
Ctrl + Alt + D |
取消全部置顶 |
Ctrl + Alt + Q |
退出工具 |
双击 WinTop.exe 即可——免装 Python、免编译、托盘常驻。
- 内置单实例保护:重复双击只会弹一句「已经在运行了」,不会开两份
- 开机自启:双击
安装开机自启.bat(指向 exe,不依赖 Python) - 改了快捷键/颜色想重新打包:双击
重新打包exe.bat(调用本目录自带的 PyInstaller) - PyInstaller 单文件 exe 是杀软误报重灾区,若被拦截,添加信任或退回源码版即可
运行环境:Windows 10 / 11 + Python 3.8+(只用标准库,无需 pip 安装任何东西)
| 操作 | 方式 |
|---|---|
| 启动 | 双击 启动WinTop.bat(托盘常驻,无控制台窗口) |
| 排查问题 | 双击 调试启动(带日志).bat,能看到报错;日志在 %TEMP%\wintop.log |
| 开机自启 | 双击 安装开机自启.bat;不想自启了跑 取消开机自启.bat |
| 直接命令行 | python win_topmost.py |
已创建计划任务 WinTop:登录时自动以最高权限启动 WinTop.exe,无 UAC 弹窗,
重启后热键与置顶能力(含管理员窗口)直接生效。
- 查看任务:
taskschd.msc(任务计划程序库 → WinTop) - 取消自启:双击
取消计划任务自启.bat(接受一次 UAC) - 注意:任务指向的是当前 exe 路径,若把工具挪了家,重建一次任务即可
| 快捷键 | 作用 |
|---|---|
Ctrl + Alt + Space |
置顶 / 取消置顶 当前窗口(同键双态切换) |
Ctrl + Alt + D |
取消全部置顶 |
Ctrl + Alt + Q |
退出工具(自动恢复所有窗口层级) |
⚠️ 刻意没用 Ctrl+Space:它是中文输入法的中英文切换键,注册成全局热键会打架。
"hotkey_toggle": "ctrl+alt+space", # 改成 "ctrl+shift+t" 这样写,修饰键: ctrl/alt/shift/win
"glow_color": "#00FF9C", # 发光颜色:#00BFFF 冰蓝 / #FF4D6D 玫红 / #FFD400 琥珀
"glow_width": 14, # 光晕带宽(像素)
"radius": 16, # 圆角半径,0 = 直角
"breath": True, # 呼吸灯;改 False = 静态常亮,最省 CPU
"fps": 30, # 跟随刷新率,低配机可降到 20改完保存重启工具即可。
- 热键:
RegisterHotKey把 WM_HOTKEY 投递到独立监听线程的消息队列(GetMessage 循环), 再经队列转交 Tk 主线程处理,避免跨线程操作 UI。 - 置顶切换:
SetWindowPos(hwnd, HWND_TOPMOST/NOTOPMOST, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE), 用GetWindowLong(GWL_EXSTYLE) & WS_EX_TOPMOST读回真实状态,不靠猜。 - 发光边框:无边框 Toplevel 窗口 +
-transparentcolor色键透明 +WS_EX_TRANSPARENT(点击穿透)+WS_EX_NOACTIVATE(不抢焦点)+WS_EX_TOOLWINDOW(不进 Alt+Tab), 画 14 圈由内到外变暗的圆角描边形成光晕。 - 精确贴合:用 DWM 的
EXTENDED_FRAME_BOUNDS取真实可视边界,避开 Win10/11 约 7px 的隐形拖拽边框。 - 状态同步:30ms 轮询跟随;目标窗口关闭/最小化时自动清理效果层,退出时统一恢复所有窗口。
- 启动即声明 DPI 感知,125%/150% 缩放下边框不错位。
| 问题 | 原因与解决 |
|---|---|
| 提示「置顶失败,可能以管理员权限运行」 | 目标是管理员权限窗口(如任务管理器),普通进程动不了它的层级。右键 启动WinTop.bat → 以管理员身份运行 |
| 按了热键没反应 | 该键位被别的软件占用了,注册失败会有气泡提示;换一个键位即可 |
| 杀毒软件报毒 | 全局钩子/热键类工具的常见误报。源码就这一个文件,可自行审阅后加入白名单 |
| 光晕盖住了窗口内容? | 不会。中间是色键全透明,且整层点击穿透,只在外围画光 |
| 多显示器 / 缩放屏幕 | 已做 DPI 感知;如果边框在副屏错位,把 fps 保持 30 并更新到最新代码 |
| 怎么彻底退出 | Ctrl+Alt+Q 或托盘右键退出,会自动把所有被钉住的窗口恢复原层级 |
本仓库以 Python 单文件版为唯一发行版(win_topmost.py + 打包脚本)。
历史上另有 C# WinForms 进阶版(分层窗口 + GDI+ 逐像素 alpha 实现光晕),
未随本仓库发布;日常使用 Python 版已足够。
WinTop/
├── win_topmost.py 工具本体源码(配置在文件顶部 CONFIG)
├── win.ico 程序图标
├── gen_icon.py 图标生成脚本
├── WinTop.spec PyInstaller 打包配置
├── 启动WinTop.bat 源码版启动(需要 Python)
├── 调试启动(带日志).bat 源码版带控制台排错
├── 安装开机自启.bat 写入 Startup 快捷方式
├── 取消开机自启.bat 移除 Startup 自启
├── 取消计划任务自启.bat 移除计划任务自启
└── 重新打包exe.bat 一键重新打包 WinTop.exe(需 pip 可联网)
成品
WinTop.exe与完整打包zip请在 Releases 页下载。