想给游戏窗口“实时遥控“?SRWE实时窗口编辑器上手全攻略
想给游戏窗口"实时遥控"?SRWE实时窗口编辑器上手全攻略
【免费下载链接】SRWESimple Runtime Window Editor项目地址: https://gitcode.com/gh_mirrors/sr/SRWE
你有没有遇到过这种尴尬:游戏明明支持窗口模式,可内置分辨率列表里就是没有 4K 选项;想截一张高清游戏壁纸,画质调满后截图还是发虚;或者只想保留画面、去掉碍眼的标题栏和边框,却找不到任何设置入口。过去我为了给《天际特别版》截图,把游戏翻了个底朝天也没找到解决办法,直到发现了 SRWE(Simple Runtime Window Editor)。这是一款免费开源的实时窗口编辑器,用 C# 编写、基于 .NET Framework 4.0,它能直接操控任意运行中程序的窗口大小、位置与样式——不需要改游戏文件,也不需要目标程序提供任何接口。下面这份教程,会带你从零开始把它用起来。
先花30秒,感受一下"实时"意味着什么
SRWE 的核心逻辑非常简单:选中一个正在运行的程序,然后在面板里改数字,窗口立刻跟着变。整个过程不需要重启程序,改完即生效。
上手体验只需三步:
- 启动目标程序,比如把你的游戏切到窗口模式;
- 用管理员身份打开 SRWE,点击工具栏上的Select running Application(选择运行中的程序),在弹出的进程列表里找到刚才那个程序,点 Open;
- 直接改数字:在Width和Height输入框里填入目标分辨率,回车或点击应用按钮,窗口马上就会变成你设定的尺寸。
如果你嫌每次手动输入麻烦,界面右侧还有一排对齐按钮,可以一键把窗口靠左、居中、靠右、靠上或垂直居中。配合Remove borders(移除边框)按钮,一个干净的无边框游戏窗口瞬间就能呈现。
热采样:为什么截图党离不开它
"热采样"(hotsampling)是 SRWE 最被玩家看重的功能。它的思路是:以普通性能跑游戏,但在按下快门的那一刻,把窗口临时拉到极高的分辨率。游戏本身不慢,截图却拥有超高分辨率,截完再调回正常尺寸继续玩。
要判断你的游戏支不支持热采样,有个 10 秒的测试方法:把游戏切到窗口模式,用鼠标拖拽窗口边框把它拉大,松开后观察游戏画面——如果画面(viewport,即游戏渲染区域)跟着窗口一起变大,说明支持;如果画面只是被拉伸变形、或者四周出现黑边,那这个游戏就不适合用 SRWE 来热采样。
关于 EXITSIZEMOVE 的一个小开关
有些游戏在手动拖拽时一切正常,但用 SRWE 调整却纹丝不动。原因在于它们会等待一条"用户调整窗口已完成"的 Windows 消息(WM_EXITSIZEMOVE)才真正应用新的尺寸。手动拖拽松开鼠标时系统自然会发出这条消息,而 SRWE 模拟调整时默认不发。
解决方法是勾选界面上的Force EXITSIZEMOVE after window resize复选框,让 SRWE 在调整窗口后补发这条消息。《龙腾世纪:审判》这类游戏必须勾选才能生效。有意思的是,《古墓丽影:崛起》勾选后反而会导致画面拉伸,所以这个开关的取值要靠实测,好在 SRWE 会记住你的选择,无需反复调整。这类细节都记录在官方 README 里,值得通读一遍。
把常用布局存成配置文件,一次搞定反复切换
每次都要输入分辨率确实麻烦,SRWE 为此提供了配置文件(Profile)机制。
- 保存:调好位置和大小后,点击Save Profile,当前窗口状态会被写进一个 XML 文件;
- 加载:点击Load Profile选中文件,配置即刻生效;
- 最近使用:保存过的配置会自动进入Recent profiles列表,下次直接点选即可。
项目自带的Profiles/目录里存放了一批现成配置,覆盖了常见比例:1-1_1200x1200.xml(适合 Instagram 方块图)、16-9_1920x1080.xml、21-9_3840x1645.xml(适合超宽屏)、4-5_960x1200.xml等,直接拿来就能用。
配置文件的格式相当直白,打开Profiles/16-9_1920x1080.xml就能看懂:
<SRWE Version="1.0"> <Profile> <Window HierID="1" PosX="0" PosY="0" Width="1920" Height="1080" Style="14080000" ExStyle="20000800" /> </Profile> </SRWE>各属性的含义分别是:
HierID:窗口在进程内的层级编号,主窗口是 1,子窗口用点号分层,例如1.2表示主窗口下的第二个子窗口;PosX/PosY:窗口左上角的屏幕坐标;Width/Height:窗口尺寸;Style/ExStyle:基本样式和扩展样式的十六进制标志位。
一个配置文件里可以写多个<Window>节点,用于同时控制一个进程的多个相关窗口——这正是多显示器工作流的基础:给左屏的窗口写一条,给右屏的窗口再写一条,双击加载,整个布局瞬间归位。
窗口样式:连标题栏和按钮都能开关
SRWE 的Windows Styles标签页把 Windows 的样式标志做成了复选框,逐个勾选/取消即可实时改变窗口外观,不用碰十六进制代码。常用标志包括:
| 标志 | 十六进制 | 作用 |
|---|---|---|
| WS_CAPTION / WS_DLGFRAME | 0x00400000 | 控制标题栏的显示 |
| WS_THICKFRAME | 0x00040000 | 可拖拽调整大小的边框 |
| WS_BORDER | 0x00800000 | 细边框 |
| WS_SYSMENU | 0x00080000 | 系统菜单(左上角图标) |
| WS_MAXIMIZEBOX / WS_MINIMIZEBOX | 0x00010000 / 0x00020000 | 最大化/最小化按钮 |
| WS_VISIBLE | 0x10000000 | 窗口可见性 |
| WS_EX_TOPMOST | 0x00000008 | 置顶显示 |
| WS_EX_TRANSPARENT | 0x00000020 | 鼠标点击穿透 |
左侧的十六进制输入框会随勾选状态实时同步,想偷懒时直接粘贴一串样式值也能改。
界面上还有两个高频按钮值得一提:
- Fake Fullscreen(伪全屏):把窗口铺满整个屏幕,但没有真正的独占全屏模式,特别适合想要全屏体验又不想让游戏切换显示模式的场景;
- Taskbar mode(任务栏模式):把窗口铺满"工作区",也就是除任务栏以外的整个屏幕——全屏同时还能看到任务栏。
进阶操作:几个容易被忽略的效率功能
当上面的基础用法玩熟后,这几个功能能让效率再上一个台阶。
按百万像素设定分辨率。与其心算 8K 是多少像素,不如直接在Megapixels输入框填一个总像素数(比如 33.2 代表约 3320 万像素),再在Aspect Ratio填上宽高比(如 16:9),SRWE 会算好宽高并直接应用。做截图批量出图时特别顺手。
缩放系数。Scale输入框允许按比例一次性放大或缩小,比如输入 2,宽高会各乘 2,适合快速放大到整数倍。
热键。默认配置里已经预置了两条:Shift+F6给前台窗口去边框、Shift+F7把前台窗口铺满屏幕。你可以在设置文件里自行增改。设置文件默认存放在%APPDATA%\SRWE\Settings.xml,路径下的HotKeys节点长这样:
<HotKey Name="RemoveBorders" CTRL="0" ALT="0" SHIFT="1">F6</HotKey> <HotKey Name="FakeFullScreen" CTRL="0" ALT="0" SHIFT="1">F7</HotKey>CTRL、ALT、SHIFT为 1 表示需要按住对应修饰键。
自动附加上次进程。勾选设置里的AutoAttach to last known process后,SRWE 启动时会自动重新连接到上一次操作过的程序,省去每次重新选进程的步骤,SRWE 会记住你最近用过的进程和配置文件。
延伸阅读:它背后的原理其实不神秘
如果你对实现方式好奇,关键代码都集中在SRWE/Window.cs里。整个工具并没有做任何"注入"操作,而是通过 P/Invoke 调用 user32.dll 中的 Windows API:
EnumThreadWindows枚举目标进程各线程下的窗口,构建出窗口树;GetWindowInfo读取窗口当前的矩形区域、样式和扩展样式;SetWindowLong修改窗口样式标志;SetWindowPos应用新的位置与尺寸;- 必要时发送
WM_EXITSIZEMOVE(0x0232)模拟"用户已结束调整"的信号。
简而言之,SRWE 做的事和你亲手拖拽窗口边框没有本质区别,只是它更精确、可以指定任意尺寸,而且能对普通方式碰不到的样式标志下手。这也解释了为什么它有个天然边界:如果游戏本身不响应窗口尺寸变化,SRWE 也无法凭空赋予它这种能力——它只是替你把"拖拽"这个动作执行得又快又准。
常见问题速查
| 现象 | 排查思路 |
|---|---|
| 进程列表里找不到目标程序 | 用管理员身份运行 SRWE 和目标程序;确认两者处于同一用户会话 |
| 改了尺寸但窗口没反应 | 尝试勾选 Force EXITSIZEMOVE;先手动拖拽测试游戏是否支持热采样 |
| 画面被拉伸变形 | 取消勾选 EXITSIZEMOVE,或换用窗口模式的游戏运行参数 |
| 配置文件加载报错 | 检查 XML 语法,确认 HierID 与当前窗口层级匹配 |
| 目标程序崩溃或闪退 | 调整样式时逐项勾选,避免一次改动过多标志 |
总结与下一步
SRWE 的价值总结起来就一句话:它把"窗口"这个被大多数人忽略的变量,变成了可以随时精确调节的旋钮。对玩家,它是获取超清游戏截图的捷径;对内容创作者,它让不同平台尺寸的出图变成加载一个配置的事;对开发者和测试人员,它又是快速验证多分辨率布局的顺手工具。它免费、开源,实现思路透明,没有任何收费点或隐藏陷阱。
如果你看完想动手试试:先用git clone https://gitcode.com/gh_mirrors/sr/SRWE拉取源码,用 Visual Studio 打开SRWE.sln编译运行,然后随便打开一个窗口模式的游戏,完成你的第一次热采样截图。遇到支持良好或无法生效的游戏,顺手把经验记录下来,这对社区里其他玩家会是很好的参考——毕竟每个游戏对窗口消息的响应方式,都需要这样一点一点试出来。
【免费下载链接】SRWESimple Runtime Window Editor项目地址: https://gitcode.com/gh_mirrors/sr/SRWE
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
