
(应用界面)

(DNF使用效果)
DNF 的窗口最小也有 800×600。刷图时,只想让画面占屏幕一角;为此我做了一个 Windows 小工具:PocketWindow。
项目已经开源,源码、使用说明和下载都在 GitHub:LuckyMiku/PocketWindow。本文不另外提供下载附件,后续版本统一在 GitHub 更新。
能做什么
- 小窗显示完整游戏画面,按住左键直接移动,拖动边缘等比缩放。
- 4:3 画面最小支持 80×60;最大宽高为原画面的 80%,800×600 对应 640×480,方便区分大小窗。
- 快捷键切换小窗和原窗口,另一个老板键隐藏或恢复。
- 大小切换、隐藏/恢复、显示小窗三组快捷键分别自定义,保存后立即生效;冲突时保留原绑定。
- 置顶可开关,不透明度可在 20%~100% 调整。
- 控制面板右上角 X 收起到系统托盘,双击托盘图标重新打开;“还原并退出”才是真正退出。
小窗仅支持键盘操作,鼠标操作请切回大窗。 不支持在小窗中点击、拖动物品或操作菜单。
怎么使用
- 从 GitHub 获取 Windows x64 独立发布包,解压运行 PocketWindow.exe,无需额外安装 .NET。
- 将游戏设成窗口模式,保持窗口打开,在工具中选择游戏并点击“开始小窗”。
- 默认 Ctrl+Alt+F8 切换大小窗,Ctrl+Alt+F9 隐藏/恢复,Ctrl+Alt+F7 显示小窗并交还键盘焦点。也可以先在面板修改快捷键。
- 刷图时使用键盘;需要鼠标时切回原窗口。
- 退出时,在系统托盘选择“还原并退出”。升级前也先退出旧版。
未勾选置顶时,小窗有自己的任务栏按钮,点击即可找回来;原游戏运行窗口按钮暂时隐藏。勾选置顶后小窗按钮也隐藏,恢复大窗时原游戏按钮回来。不会删除用户固定的游戏启动快捷方式。
实现方式
PocketWindow 使用 C#、WinForms 和 Windows DWM 实时缩略图显示游戏客户区。游戏仍按原来的分辨率渲染,因此这不是降低游戏渲染分辨率,也不应期待显著降低显卡负载。
原窗口保留在屏幕内,临时设为 1/255 透明度并让鼠标穿透;小窗显示正常亮度的缩略图。小窗使用 WS_EX_NOACTIVATE,键盘输入仍交给真实游戏窗口。程序不读取游戏内存、不注入 DLL,也不提供按键宏。
切回原窗口或退出时恢复位置、窗口样式和透明度。另有守护进程,在工具异常结束后尝试恢复;恢复前检查进程身份,避免把旧记录应用到无关窗口。
验证和限制
v0.4.1 在自带测试窗口上通过了 81 项本地检查,覆盖缩放、动画、透明度、任务栏、快捷键冲突保护、关闭到托盘和异常恢复。这是通用窗口测试,不等于所有游戏都已经兼容。
只支持窗口模式。某些游戏或受保护的画面可能黑屏、停帧,实际兼容性需要分别测试。低透明度的原窗口在特定背景上可能留下极淡残影。老板键不静音,也不关闭游戏另开的弹窗。
源码采用 MIT 许可,是原创实现。欢迎在 GitHub 项目反馈问题和参与改进。