传奇世界单机Cannot focus窗口报错完整排查修复

来源: 作者: 点击:
一、这个提示到底是什么意思

Cannot focus a disabled or invisible window 直译就是“无法把焦点交给一个被禁用或看不见的窗口”。放到传奇世界单机环境里,不是存档坏了也不是数据库崩了,而是程序启动过程中,引擎想激活某个还没加载完、已经被关掉、被系统隐藏或者被权限禁用的窗口/控件,系统直接抛了这个错。

常见触发点就几个:

• 服务端黑窗口(DBServer、LoginGate、GameGate、M2Server)没按顺序起完你就点登录器

• 某个黑窗口被你手滑关了,其他窗口还在跑,句柄错乱

• 控制器没管理员权限,Win10/Win11把后台窗口判定成“禁用”

• 客户端全屏/窗口模式切换时,DPI缩放和高分屏把窗口渲染丢了

• 输入法、录屏、Overlay、辅助工具在抢焦点

• 路径带中文或空格,导致部分窗口资源加载不出来

按下面顺序一层层试,不用重下版本。

二、第一步:清干净再重起(解决80%临时冲突)

1. 关掉报错弹窗。
2. Ctrl+Shift+Esc 打开任务管理器,把下面这些全结束:
• 服务器控制器(GameCenter.exe 或类似名)

• DBServer、LoginGate、GameGate、M2Server 等黑框

• 游戏客户端(mir.exe / game.exe / 登录器.exe)

• 任何名字带“网关”“引擎”“world”“mir”的进程

3. 顺手关掉桌面多余软件:输入法悬浮、录屏、微信悬浮窗、显卡录制、Steam/Discord覆盖层、各类内存挂和脚本工具。
4. 重启一次电脑。别嫌麻烦,这步是把系统里残留的窗口句柄和焦点状态全清空,很多“时好时坏”的报错重启就好。
5. 电脑起来后什么软件都别开,直接进服务端目录。

三、第二步:用管理员身份按正确顺序起服务端

1. 找到服务器控制器(一般是 GameCenter.exe 或 控制器.exe)。
2. 右键→属性→兼容性:
• 勾“以管理员身份运行此程序”

• 勾“禁用全屏优化”

• 兼容模式选 Windows 7 或 Windows XP SP3

• 高DPI设置里勾“替代高DPI缩放行为”,选“应用程序”

3. 应用确定,右键控制器选“以管理员身份运行”。
4. 点“启动游戏服务器”,盯着黑窗口一个个弹出来:
• 数据库网关先起

• 登录网关

• 游戏网关

• M2主引擎最后

5. 每个黑窗口都等它刷完日志、不再滚动了,再操作下一步。
6. 所有黑窗口只能最小化,绝对不能点右上角×。关掉任何一个,其他窗口的通信和焦点就乱了,再次点登录器必报这个错。
7. 如果误关了其中一个,不要只补起那个,把控制器整个关掉回到第二步重来。

四、第三步:客户端/登录器同样加权限和兼容

游戏客户端和登录器本体也要改一遍属性:

1. 右键 mir.exe / game.exe / 登录器.exe→属性→兼容性。
2. 管理员运行、禁用全屏优化、Win7兼容模式、DPI替代全勾上。
3. 启动方式优先用窗口模式,别一上来就全屏。
• 如果登录器有设置项,显示模式选“窗口”或“窗口化全屏”

• 分辨率手动定成 1024x768 或 1280x720 先测试,别用系统原生2K/4K

4. 进游戏正常后再慢慢往上调分辨率,别一开始就拉满。

五、第四步:处理高分屏和DPI缩放

Win10/Win11高分屏是这类老引擎的重灾区。

1. 桌面右键→显示设置,先把缩放改成 100%(测完再调回去)。
2. 游戏主程序属性→兼容性→更改高DPI设置:
• 勾“替代高DPI缩放行为”

• 下拉选“应用程序”

3. 显卡控制面板里把这个游戏exe加进独立配置:
• N卡:管理3D设置→程序设置→添加exe→缩放模式选“全屏”

• A卡:显卡软件里关掉Radeon Boost、抗延迟、图像锐化再测

4. 多显示器的话,先把副屏拔了或禁用,主屏设成唯一显示,进游戏稳了再接回来。

六、第五步:关掉抢焦点的东西

下面这些软件会在游戏启动瞬间插一脚,导致窗口刚创建就被抢焦点,然后引擎去找“看不见的窗口”:

• 微软拼音/第三方输入法:进游戏前切到“英文(美国)”键盘

• Discord覆盖层、Steam Overlay:设置里全关

• NVIDIA GeForce Experience 游戏内覆盖:临时关闭

• 各类录屏、推流、帧数显示(MSI Afterburner、小飞机)

• 杀毒软件实时防护:把服务端和客户端目录加白名单

• 按键类、宏类、内存修改工具:测试阶段先全退

七、第六步:检查路径和文件权限

1. 服务端路径必须纯英文,别放“D:\我的游戏\传奇世界”这种:
• 正确:D:\WolServer 或 D:\MirServer

• 别带空格、中文、&、#、括号

2. 客户端目录同理,纯英文。
3. 服务端根目录右键→属性→安全:
• 给 Users 用户组开“完全控制”

• 杀软可能把 M2Server.exe、网关exe、登录器当成风险文件删了,去杀软隔离区看一眼,恢复并加信任

4. 确认 Mir200 下核心文件没缺:
• M2Server.exe

• 各网关exe

• 登录器对应补丁

缺了就从原压缩包重新解压,不要只补一个文件。

八、第七步:配置文件里顺手核一下

虽然这个报错主要在窗口层,但配置错了也会让某个子窗口起不来。

1. 打开 !Setup.txt 或引擎配置器:
• 端口别冲突(7000、7100、7200这一组,改一套就全改一套)

• 网关地址填 127.0.0.1

2. 登录器配置器里:
• 单机模式勾上

• 微端关掉

• 客户端目录指向正确

3. 如果用了Lua/脚本热加载,先临时把自定义UI脚本、弹窗脚本注释掉,用原版空环境进一次游戏。能进就说明是你自己加的NPC界面脚本在窗口没初始化时调用了控件焦点。

九、第八步:还报错的硬排查顺序

按这个清单挨个过:

1. 控制器是不是管理员起的——不是就重来
2. 黑窗口是不是全在——少一个就全关重起
3. 启动顺序是不是数据库→网关→M2——乱序就重来
4. 兼容模式和高DPI有没有改——没改先改
5. 显示缩放是不是100%——不是先改100%
6. 输入法和Overlay关没关——没关先关
7. 路径是不是纯英文——不是先搬盘
8. 杀软有没有误删exe——查隔离区
9. 换窗口模式进游戏——别用全屏
10. 换低分辨率进游戏——1024x768先验证

十、进游戏后的稳定动作

能正常进游戏了,别急着拉满画质:

1. 先在窗口模式下玩一会,确认不弹错。
2. 退出游戏,把分辨率调到 1280x720 或 1366x768。
3. 再试“窗口化全屏”。
4. 最后才试独占全屏。
5. 每次只改一项,改完重开验证,方便定位是哪一步引起的。
6. 把控制器、网关、客户端、登录器的兼容性设置存成固定配置,以后直接右键管理员启动,别双击就开。

十一、几种典型场景对照

场景A:一点登录器就弹这个错
黑窗口没起完,或者控制器没管理员权限。关掉全部,按第二步重来。

场景B:选完角色进游戏瞬间弹错
客户端全屏/DPI冲突。切窗口模式、降分辨率、关全屏优化。

场景C:切出去看一眼微信,切回来就弹错
输入法或Overlay抢焦点。切英文键盘,关Discord/Steam覆盖。

场景D:改了NPC脚本之后开始报
脚本里在窗口未显示时调用了控件焦点。把新加的界面脚本先屏蔽,原版能进再逐步放回来。

场景E:重启电脑前怎么都报,重启后好了
典型句柄残留,不用动版本,清进程+重启解决。

十二、不用重装版本的底线

这个报错基本都不用重下服务端。优先顺序永远是:

清进程 → 重启 → 管理员起控制器 → 等黑窗全起 → 窗口模式低分辨率 → 关Overlay和输入法 → 查路径权限 → 最后才动配置和脚本。

真要备份的话,只备份 Mir200、Data、Config、登录器配置这几个目录就行,改崩了回滚快。

按上面走一遍,绝大多数 Cannot focus a disabled or invisible window 都能消掉。要是清完进程重启、管理员顺序起完还报,重点看是不是自己加的UI脚本或登录器补丁跟当前系统不兼容,换原版登录器先验证一次就清楚了。