Skip to content

Home Simplified

mangokingTW edited this page Aug 28, 2026 · 11 revisions

 输入法工具箱 IME Mode Persistence

跨窗口维持中/英,并为程序绑定输入语言

繁體中文 · English · 简体中文 · 日本語 · 한국어

Windows 小工具,控制输入法在程序之间的行为:切换窗口时延续你最后选择的输入模式(中文/英数),并可把指定程序绑定到固定的输入语言 —— 连读不到可执行文件的程序也行,例如有反作弊的全屏游戏。

安装

推荐:Microsoft Store —— 已签名、自动更新。

也可以到 Releases 下载:

文件 说明
...-setup.exe 标准安装程序(安装时可选择为当前用户或全机安装)
...-x64.zip 免安装,解压即用

安装时勾选 开机时自动启动。装好就会运行,不需要其他设置。

程序常驻在通知区域 —— 屏幕右下角、时钟左边。Windows 11 默认把新图标收起来,要先点时钟旁的 才看得到。图标是蓝色圆角方块里一个白色的「中」。

⚠ 从 GitHub 下载的版本尚未签名

这一节只适用于从 GitHub Releases 下载的安装文件或 zip;上面的 Microsoft Store 版本已签名,不会遇到以下问题

GitHub 构建目前没有代码签名证书,因此可能遇到:

  • 蓝色的「Windows 已保护你的电脑」→ 点「更多信息 → 仍要运行」。这是信誉警告而非病毒检测。
  • 杀毒软件把安装文件删掉 —— 已知检测名称是 Behavior:Win32/Persistence.A!ml,针对的是「开机时自动启动」建立的登录任务。遇到时改用免安装的 zip,或不勾选「开机时自动启动」。已向微软提交误判报告,但没有人能保证杀毒软件的判断。

源代码、构建流程与发布产物全部公开,由 GitHub Actions 从对应的 tag 构建并附上构建来源证明(build provenance),可用 gh attestation verify 验证。介意的话,改用上方的 Microsoft Store 版本即可完全避开这些问题。

为什么会需要它

Windows 把输入法状态绑在每个线程上。切到另一个窗口时,中/英转换模式会回到该输入法的默认值 —— 对中文键盘来说就是中文。所以你刚按 Shift 切成英数,换个窗口又打出中文。

「设置 → 时间和语言 → 输入 → 高级键盘设置」里的**「允许我为每个应用程序窗口使用不同的输入法」解决不了这件事**。那个设置管的是「哪一个输入法在作用」,不管「该输入法处于中文还是英数」—— 关掉它之后,切换窗口照样切回中文。

没有任何 Windows 设置能处理转换模式 —— 这是这个工具的第一个目的:让你选的中/英模式跟着你走。

第二个目的是把特定程序固定在某个输入语言,包含连设置都碰不到的那类 —— 使用 raw input 的全屏游戏直接读键盘设备,完全不参与输入法的状态管理,只能从外部处理。Helldivers 2 就是这种。

功能

托盘图标按右键,这些功能都在菜单里:

托盘右键菜单

跨程序维持输入模式(默认开启)

在 A 窗口用中文打字,切到 B 窗口时中文模式会被还原。你在 B 按 Shift 改成英数,切到 C 窗口还原的就是英数 —— 跟着你最近一次的手动切换走。不想要就在右键菜单取消勾选。

程序绑定输入语言

把特定程序固定在某个输入语言:终端永远英文、Word 永远中文。右键菜单 → 程序绑定输入语言…

程序绑定输入语言对话框

  • 浏览 选出可执行文件 → 只对那个位置的程序生效
  • 只填文件名(notepad.exe)→ 不管装在哪都适用
  • 用刚才的程序 → 自动填入你开这个窗口之前用的程序
  • 用窗口类别 → 给读不到可执行文件的程序用,见下面的教程
  • 通配符(高级) → 路径带版本号、或窗口类别有生成后缀时,直接在字段输入 glob:*\game.exe(比对路径)或 class-glob:name_*(比对窗口类别),支持 *(任意长度,含路径分隔符)与 ?(单一字符)。精确规则一律优先于通配符 —— 这是默认顺序,你也可以拖拉列表自定义,由上到下第一个符合的优先;每条规则可设只套用一次(进窗口设一次、之后不再强制),全部都不符合时还能启用一条默认语言(默认关闭)。

光标输入指示器(默认关闭)

托盘菜单的在光标旁显示输入指示会在文本光标旁显示一个小指示器,告诉你当前会打出什么(该语言的中文/native 模式)、(输入法切到英数)、或 EN 之类的语言代码。设置会被记住。

指示器会跟着光标、避开自己的窗口。在浏览器地址栏这类字段,因为 Chromium 对外报告的光标位置不可靠,指示器会改显示在该行上方、不遮住文字。

下列位置不会显示输入法指示器任务栏与开始菜单的搜索框Windows 终端文件资源管理器。这些属于系统级界面,Windows 仅允许具备数字签名的程序在其上显示内容,而本工具目前尚未签名。普通应用程序(浏览器、记事本与各式文本编辑器、Office、聊天软件、游戏等)均可正常显示。

逐步教程

怎么知道它在做什么

把鼠标停在图标上,不要点。停留就会显示状态;点下去会让你想查的程序失去焦点,看到的就不是它了。

停在图标上显示的状态

意思
当前程序 当前在最前面的程序
绑定语言 规则指定给它的语言
实际语言 它现在真正在用的语言
上次切换尝试 有没有成功

绑定语言与实际语言一致就代表正常。若最后多一行「普通权限 - 看不到提权的程序」,代表本工具没有以管理员身份运行。

左键双击图标可看到更完整的状态,包括开机自动启动当前用的是哪一种机制。

常见问题

为什么切换到新版记事本等现代窗口时,输入模式没有维持? 新版记事本等现代 / WinUI 封装程序的真正输入栏在焦点子窗口,受 Windows UIPI 机制保护:

  • 解法(推荐):在托盘菜单点击「启用现代窗口 (WinUI) 支持…」(通过一次 UAC 启动后台辅助服务),即可由 Helper 跨越 UIPI 保护维持输入模式。Microsoft Store 商店版与普通桌面版皆支持
  • 桌面版亦可直接提权:点击托盘菜单「以管理员身份重新启动」。

「当前程序」显示 class: 开头的东西 正常,不是故障。有些程序(多半是有反作弊的游戏)不允许其他程序读取它的文件位置,这时本工具改用窗口类别辨识它。那串 class:... 就是绑定规则要填的内容。

要不要以管理员身份运行? 要控制本身以管理员身份运行的程序(多数有反作弊的游戏都是)就必须提权 —— Windows 不让权限较低的程序读取权限较高的程序的窗口,连窗口类别都读不到。

开机自动启动一律是普通权限,因为「开机时自动以管理员身份启动」正是杀毒会判成恶意的持久化行为,本工具刻意不做。要控制提权程序时,用托盘菜单的 以管理员身份重新启动 当场提权(每次开机后、要用之前按一次,过一次 UAC)。

只在意普通程序(跨窗口维持模式、绑定普通程序)的话,完全不需要提权,...-setup.exe 就够用。

高级:真的想要提权开机。 本工具刻意不内置(理由如上),但你可以自己用任务计划程序建立一个「登录时、以最高权限」的任务。以管理员打开命令提示符,运行(路径换成实际安装位置;选全机安装时默认在 C:\Program Files\ImeModePersistence):

schtasks /Create /TN "ImeModePersistence-Elevated" /TR "\"C:\Program Files\ImeModePersistence\ImeModePersistence.exe\"" /SC ONLOGON /RL HIGHEST /F

/RL HIGHEST 让它登录时以最高权限启动且不跳 UAC。建立后,请到托盘菜单把 app 内置的开机时自动启动关掉,否则未提权的 HKCU Run 注册表项会在登录时再开一个未提权实例。移除这个任务:schtasks /Delete /TN "ImeModePersistence-Elevated" /F

绑定的是语言,不是特定输入法 中文、英文、日文可以分别绑定。但同一个语言装了多个输入法(注音和仓颉都算中文)时无法指定其中某一个,会用第一个已安装的。

有些程序切换后又自己变回去 本工具会重试几次,若该程序坚持用自己的设置就先放手再试 —— 从几秒开始,愈抢愈久,最多半分钟,这是刻意的,避免互相抢。切到别的窗口再切回来会立刻重试。

会不会被反作弊误判? 不修改游戏、不读写它的内存、不注入任何东西、不模拟按键。切换的方式是向窗口投递 Windows 标准的「切换输入语言」通知(跟你按 Win+Space 时系统发出的是同一种,窗口可以自行忽略),行不通时改请 Windows 自己切换。完整清单与判断依据在 Helldivers 2 那页。

其他

界面语言跟着 Windows 的显示语言自动选择(英文、繁中、简中、日文、韩文)。安装程序的画面只有英文。深色模式下,程序绑定对话框整个套用;状态/错误这类临时小框维持浅底、仅标题栏变暗。

Clone this wiki locally