||
这次总算解决了不定时出现出错的Bug这个问题,其实也是自己学艺不精,不知道有些变量设置是可以用来调节脚本的运行速度的。
这个Bug表现是这样的,当打得太快的时候,弹出这个一个窗口:
今天在研究影子输入法的代码时,突然想到,按说影子输入法增加了那么多功能,且调用外部DLL来查询数据库,这些运行的速度应该比简单的柚子输入法慢,它为什么能够稳定运行呢? 可能和前面的这个设定有关。
如果这样,那这些变量设定或许也可以复制到柚子输入法中来使用。于是我试了一下,剔除明显不相关的设置,复制到autohotkeyU64.ahk中,保存再RELOAD一下,果然再怎么测试打字,都不会出错了,一下子就解决了不定时出错的Bug。
为了真正弄清楚原因,我一行一行的注释掉加入的新代码,看看到底是哪一行起了作用,最后发现是`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!
1/0 | 闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅梺鍝勭▉閸樿偐绮堥崼鐔稿弿婵妫楅崝锕傛煥濠靛棭妲哥紒鐘烘珪娣囧﹪濡堕崪鍐╂暰闂佸搫鎷戠紞浣割潖閾忚宕夐柕濞垮劜閻濄垽姊洪悷鏉挎闁瑰嚖鎷�:0 | 濠电姷鏁告慨鐑姐€傞挊澹╋綁宕ㄩ弶鎴狅紱闂佽宕樺▔娑氭閵堝憘鏃堟晲閸涱厽娈查梺绋款儏椤戝寮婚敐鍛傜喎鈻庨幆褎顔勯柡澶嗘櫆缁诲牆顫忛搹瑙勫磯闁靛ǹ鍎查悵銏ゆ⒑閻熸澘娈╅柟鍑ゆ嫹 | 濠电姷鏁告慨鐑藉极閹间礁纾婚柣鎰惈閸ㄥ倿鏌涢锝嗙缂佺姳鍗抽弻鐔兼⒒鐎电ǹ濡介梺鍝勬噺缁诲牓寮婚妸銉㈡斀闁糕剝锚缁愭盯姊洪崨濠庢畷鐎光偓閹间礁绠栨俊銈傚亾闁宠棄顦埢宥嗘綇閵娧呯厑缂備礁鍊哥粔鎾偑娴兼潙閱囬柣鏂挎惈瀵娊姊绘担铏瑰笡婵炲弶鐗犲畷鎰板捶椤撴稑浜炬慨妯煎亾鐎氾拷 | 闂傚倸鍊搁崐宄懊归崶褏鏆﹂柛顭戝亝閸欏繘鏌熺紒銏犳灈缂佺姾顫夐妵鍕箛閸洘顎嶉梺绋款儛娴滎亪寮诲☉銏犖ㄦい鏂垮綖濮规鎮峰⿰鍛暭閻㈩垱顨婂鏌ュ箹娴e湱鍙嗛梺缁樻礀閸婂湱鈧熬鎷� |
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-3-15 19:39
Powered by ScienceNet.cn
Copyright © 2007-2025 中国科学报社