一个开源工具,让任意Windows窗口保持置顶:AlwaysOnTop快速上手指南
如果你经常同时开着好几个应用,一定有过这样的经历:好不容易打开的参考资料,切个窗口就被压到底层;在线听课想边看视频边记笔记,两个窗口来回切换到头昏。Windows系统本身并没有提供"让某个窗口一直显示在最前面"的功能,而市面上的窗口管理软件大多笨重又收费。开源项目 AlwaysOnTop 就是为解决这个具体问题而生的:一个常驻系统托盘的小程序,让你用两次点击,就能把任意 Windows 应用窗口固定在所有窗口之上,随时还能一键撤销。
先看它解决什么问题
AlwaysOnTop 做的事情很简单——调整窗口在系统中的显示层级,不动窗口大小、不影响窗口原有功能,也不去碰别的程序。它本身只是个几十 KB 的托盘程序,在后台静默运行,占用的资源几乎可以忽略不计。
适合它的典型场景:
- 写代码时把浏览器里的接口文档悬停在编辑器上方,边看边敲;
- 录制教程或开会共享屏幕时,把提词稿或笔记窗口固定在最上层;
- 一边看视频教程一边做练习,不用再反复切换窗口;
- 游戏过程中把攻略页或聊天窗口钉在游戏画面上方。
凡是"两个窗口需要同时可见、但系统默认做不到"的情况,都值得一试。
三步完成一次窗口置顶
整个操作流程短到可以背下来:
- 运行 AlwaysOnTop,系统托盘出现它的紫色图标(首次启动会弹一条气泡通知确认它在后台运行);
- 左键或右键点击托盘图标,在弹出的菜单里选择 "AlwaysOnTop";
- 这时鼠标指针会变成十字形,把十字对准你想置顶的窗口点一下即可。
置顶成功后,该窗口标题栏末尾会被追加 - AlwaysOnTop 字样,作为状态标记。再次执行同样的操作,标记消失,窗口恢复正常层级。
小提示:如果你用鼠标点击时不小心没点中窗口,程序会给出提示;万一光标没有恢复原状,打开托盘菜单里的 "Help" 窗口,里面有一个专门用来恢复箭头的按钮。
进阶用法一:配置全局快捷键
从 0.5.0 版本起,AlwaysOnTop 支持自定义全局快捷键,置顶不再需要碰鼠标。在托盘菜单里打开 Settings,勾选 "Use Hot Key",再点 "Set Hotkey",按下你习惯的组合键(例如 Ctrl+Shift+T),保存后应用。之后每次按下这个组合键,当前正在前台活动的窗口就会被直接置顶或取消置顶。
这套快捷键是全局生效的,即使 AlwaysOnTop 本身没在前台也能响应。适合设置成一组好记的组合,比如:
| 使用习惯 | 建议组合键 |
|---|---|
| 高频置顶/取消 | Ctrl+Shift+T |
| 仅用于看文档 | Ctrl+Alt+D |
| 习惯用功能键 | Ctrl+F12 |
注意一点:修改快捷键相关的设置后,程序会提示需要重启才生效,选择立即重启即可。
进阶用法二:开机自启动与通知管理
Settings 里还有两个高频选项值得勾选:
- Run at Login(开机自启动):把程序注册到 Windows 启动项里,登录后自动在托盘后台运行,适合那些每天都要用置顶功能的用户;
- Disable Balloon Notify(关闭气泡通知):如果你觉得每次置顶都弹通知太吵,勾选它,操作会安静很多。
其余设置项(标题栏右键菜单、按标题记忆窗口等)在源代码里标注为待开发功能,界面上暂时处于不可用状态,可以不用理会。
配置存在哪里、如何备份
AlwaysOnTop 把全部配置写进当前用户的注册表:
HKCU\SOFTWARE\AlwaysOnTop
重装系统前想保留配置,可以用 regedit 定位到这个键值,右键导出为 .reg 文件,新系统里双击导入即可恢复。启动项则单独写入了 HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,也就是标准 Windows 自启动位置,在任务管理器的"启动"标签里同样能看到。
避坑:几个新手常踩的坑
按项目文档和常见使用反馈,下面几个问题出现频率最高:
- 个别窗口怎么点都置顶不了。 优先尝试以管理员身份运行 AlwaysOnTop;如果目标程序本身以管理员权限运行,而 AlwaysOnTop 是普通权限,两者权限层级不同,可能会互相"看不见"。把两边都调成管理员权限通常能解决。
- 快捷键按了没反应。 先确认托盘图标还在;再检查组合键是否被其他软件占用;最后回到 Settings 里重新设置一次并重启程序。
- 程序异常退出。 错误日志写在程序目录下的
AoT_Error.log文件里,遇到崩溃先看这个文件,再考虑是否缺少 .NET Framework 4.5.2 运行环境。
想改代码?项目结构并不复杂
AlwaysOnTop 用 C# 编写,基于 WinForms,代码量不大,全部源码随项目公开。如果你对"窗口置顶"这类系统级操作感兴趣,几个关键文件值得翻一翻:
Classes/Methods.cs:核心逻辑所在,通过调用 user32 的SetWindowPos把窗口句柄置为 TOPMOST / NOTOPMOST,并拼接窗口标题;Classes/globalKeyboardHook.cs:全局键盘钩子实现,负责拦截你的自定义快捷键;Classes/AlwaysOnTop.cs:托盘菜单、右键逻辑、状态判断等主窗体逻辑;Classes/FormSettings.cs:设置界面,读写注册表。
用 Visual Studio 打开解决方案直接编译即可产出 exe。项目要求 .NET Framework 4.5.2 以上,兼容 Windows 7 到 Windows 10 的 32/64 位系统,Windows Server 未做官方测试。
与同类方案的取舍
市面上能实现置顶的工具有不少,但 AlwaysOnTop 的定位很明确:只做一件事,并把这件事做到最轻。它没有窗口整理、虚拟桌面、布局快照这些附加功能,换来的是极低的体积和几乎为零的学习成本。如果你要的是"打开就用、两步置顶",它比那些功能繁多的桌面管理套件更顺手;反过来,如果你需要的是整套窗口管理方案,那它不是那个答案。
下一步:花一分钟试一次
到这里,工具的全貌已经介绍完了,剩下的事情只需要一分钟:下载或编译一个版本,启动,把某个文档窗口置顶,再取消。体验过一轮,你就知道它合不合自己的习惯。
如果想直接从源码开始,可以这样拉取:
git clone https://gitcode.com/gh_mirrors/al/AlwaysOnTop
这个项目从 2016 年首次发布以来迭代平稳,置顶、托盘、全局快捷键这几条主干功能都已稳定可用。与其记下这篇介绍,不如现在就去把你的参考资料窗口钉在最上层试试。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



