
最近我在玩游戏时经常遇到窗口丢失焦点的问题,表现为游戏窗口失去焦点约半秒,之后会重新获得焦点。我怀疑是有其他进程抢占了焦点,但是期间并没有看到有其他程序的窗口出现。
失去焦点会导致游戏窗口丢失输入,很影响游戏体验,特别是在绝区零这样的动作游戏里会导致动作中断。比如今天我的星见雅在长按普攻释放三蓄时,蓄力到第二段时丢失了焦点,直接释放了 2 蓄的剑气,我真是无语了。还好我现在没有玩 PVP 游戏,否则的话想象一下近身交战时,我的角色突然停止所有操作,原地发呆半秒钟,那或许我能做的就是双手离开键盘,准备欣赏角色死后摆出的姿势了。
我询问 Grok 有什么办法找出抢占焦点的程序,它推荐了一些软件,我试了第一个软件就解决了问题。另外我知道了这个现象在英语里叫作焦点窃取(focus stealing)。
这个软件叫 FocusLogger,可以从 GitHub 的 releases 页面下载:
https://github.com/JocysCom/FocusLogger/releases/tag/1.1.14
从压缩包里解压出一个单 exe 文件,运行它,就会记录所有获得焦点的进程,例如:
当出现焦点丢失的情况时,立刻切换到 FocusLogger 查看最近的进程,找到不该出现的那个坏东西。
导致我的问题的程序就是图上的 ldplayerpartner.exe,它是雷电模拟器(一个 Android 模拟器)的文件:
它每隔 30 分钟准时运行一次,而且每次都是全新启动(因为 PID 不同),创建一个标题为“新通知”的窗口,但是我从来没见到过这个窗口。
任务管理器里没有这个进程,但有个常驻的 ldplayerservice.exe:
应该是它会定时启动 ldplayerpartner.exe 来尝试显示什么东西。但是挺奇怪的,因为如果是显示游戏的广告弹窗之类的,不应该 30 分钟显示一次,这样用户肯定受不了。而且实际上它从没显示任何东西,这就更奇怪了。
我把 ldplayerpartner.exe 删除,并创建了一个 txt 文件,把它的文件名改成 ldplayerpartner.exe 来占位:
成功解决了这个问题。
为了防止 ldplayerservice.exe 恢复 ldplayerpartner.exe,我把这个占位文件的属性设置为了“只读”。另外由于 ldplayerservice.exe 是以 SYSTEM 权限运行的,为了不让它操作 ldplayerpartner.exe,我在后者的的权限设置里,把 SYSTEM 用户设置为了全部拒绝。这样姑且多一道保险。
Google Chrome 140
Windows 10/11
https://github.com/MustardChef/WSABuilds
我还在用wsa啊,还真是正常能用的,有root,有Google play,能任意调整窗口大小,多程序就像Windows窗口那样多开,还有独立焦点,能访问主机局域网,我真的找不到替代品。