一个轻量的 Windows 窗口置顶工具。通过全局热键一键切换任意窗口的置顶状态,程序驻留系统托盘,无主窗口打扰。
- 全局热键
Ctrl+Shift+Space:切换当前活动窗口的置顶状态- 按一次 → 置顶当前窗口(始终显示在最上层)
- 再按一次 → 取消置顶
- 系统托盘常驻:启动后无主窗口,仅在右下角托盘显示图标
- 已置顶窗口管理:右键托盘图标可查看所有已置顶窗口列表,单独取消或全部取消
- 退出自动清理:退出程序时自动取消所有已置顶状态,不遗留
- 单实例保护:防止重复启动导致的热键冲突
(待补充)
- Windows 10 / 11
- Python 3.10+
pip install -r requirements.txt依赖清单:
PySide6- Qt GUI 框架(托盘图标、菜单)pywin32- Windows API 调用(窗口置顶、全局热键)
python -m pintotoppythonw pintotop.pyw双击 pintotop.pyw 也可直接启动,不会弹出控制台窗口。
- 启动程序,右下角托盘出现橙色图钉图标,同时弹出启动提示。
- 切到想要置顶的窗口(如记事本、浏览器、微信等)。
- 按
Ctrl+Shift+Space,托盘弹出气泡提示"已置顶:xxx",该窗口现在始终在最上层。 - 再按
Ctrl+Shift+Space,取消置顶。 - 右键托盘图标:
- 查看已置顶窗口列表(点击列表项可单独取消)
- "取消所有置顶" - 一键取消全部
- "退出" - 退出程序(自动取消所有置顶)
PintoTop/
├── pintotop/
│ ├── __init__.py # 包定义、版本号
│ ├── __main__.py # 入口:python -m pintotop
│ ├── app.py # 应用主控:QApplication、单实例锁、热键、托盘、退出清理
│ ├── hotkey.py # 全局热键:独立线程 + RegisterHotKey + Qt Signal
│ ├── pin_button.py # 置顶管理器:维护已置顶窗口集合
│ ├── tray.py # 系统托盘:图标 + 右键菜单 + 已置顶列表
│ └── winapi.py # Windows API 封装:置顶/查询/窗口信息
├── pintotop.pyw # 无控制台启动入口
├── requirements.txt # 依赖清单
└── README.md
使用 Windows RegisterHotKey API 注册全局热键,在独立线程中运行消息循环监听 WM_HOTKEY 消息,通过 Qt Signal 跨线程安全地通知主线程执行置顶操作。
调用 SetWindowPos 配合 HWND_TOPMOST / HWND_NOTOPMOST 标志切换窗口的置顶状态,通过查询 WS_EX_TOPMOST 扩展样式判断当前是否已置顶。
使用 Windows 命名互斥体(CreateMutexW)实现单实例锁,防止重复启动导致的热键冲突。
- 以管理员权限运行的程序(如任务管理器、注册表编辑器)需要 PintoTop 也以管理员身份运行才能置顶。
- 热键
Ctrl+Shift+Space若被其他程序占用会注册失败,程序会通过托盘气泡提示。
- 语言:Python 3.10+
- GUI:PySide6 (Qt 6)
- Windows API:pywin32
可使用 PyInstaller 打包成单可执行文件:
pip install pyinstaller
pyinstaller --noconsole --onefile --icon assets/tray.ico pintotop.pywMIT