修订的柚子输入法,终于解决了不定时Bug问题
这次总算解决了不定时出现出错的Bug这个问题,其实也是自己学艺不精,不知道有些变量设置是可以用来调节脚本的运行速度的。
这个Bug表现是这样的,当打得太快的时候,弹出这个一个窗口:

今天在研究影子输入法的代码时,突然想到,按说影子输入法增加了那么多功能,且调用外部DLL来查询数据库,这些运行的速度应该比简单的柚子输入法慢,它为什么能够稳定运行呢? 可能和前面的这个设定有关。
如果这样,那这些变量设定或许也可以复制到柚子输入法中来使用。于是我试了一下,剔除明显不相关的设置,复制到autohotkeyU64.ahk中,保存再RELOAD一下,果然再怎么测试打字,都不会出错了,一下子就解决了不定时出错的Bug。
2025-03-10_224948.png
为了真正弄清楚原因,我一行一行的注释掉加入的新代码,看看到底是哪一行起了作用,最后发现是setBatchLines,-1这一行,再查帮助,发现AHK默认的两次脚本之间休眠10ms,但写了这一句之后,两次脚本之间是不休眠的,这样通过占用更多的CPU时间来让脚本全速运行。
前面出错的根本还是输入法中词汇太多CPU处理不过来,如果还有默认的休眠10ms(没有写这一句就是默认设置)就来不及处理了从而出错。当然,设置线程优先级为高这一句也是有帮助的。
setBatchLines命令, 帮助解释得非常详细,如下:
使用 SetBatchLines -1 让脚本无休眠运行(即让脚本以全速运行)。`
默认设置为 10ms,不过在 v1.0.16 之前的版本中默认为 10 (行)。`
不论希望脚本快速执行还是希望脚本减少 CPU 占用都推荐使用 "ms" 方法. 例如, 在大多数系统中 10ms 的设置会避免脚本使用超过 50% 的 CPU 时间.
这样既可以让脚本快速运行, 同时也保留了充分的 CPU 资源供其他任务使用, 例如游戏或视频捕获/回放.`
内置变量 A_BatchLines 包含了当前的设置.`
根据脚本的内容, 脚本的速度还可能会受到下列命令的影响: SetWinDelay, SetControlDelay, SendMode, SetKeyDelay, SetMouseDelay 和 SetDefaultMouseSpeed.`
每个新运行的 线程 (例如 热键, 自定义菜单项 或 定时 子程序) 都会以此命令的默认设置开始. 通过在脚本的自动执行段 (脚本的顶部) 使用此命令可以改变这个默认设置.`
现在,问题总算解决了,Great!
附上 修订过的youzi输入法

浙公网安备 33010602011771号