一点都不好调
关键还是 sleep
要 sleep 多次才好呢
之前 sleep 100 够了,偶尔 100 又不行了,
改成 200 好了,OK,突然 cpu 升高 200 就不行了,
啊啊啊,撞墙的冲动油然而生
1
hxy100 2022-11-08 17:57:17 +08:00 2
sleep 的目的是啥,如果是需要等待窗口可用来做相关的操作,有很多函数可以用( WinWait 、WinWaitActive / WinWaitNotActive 、WinWaitClose )其他情况也可以对症下药
|
2
Thiece 2022-11-08 18:05:42 +08:00 1
和 Python 一样的问题,都是调用操作系统中计时系统的精确度,导致毫秒级计时精度问题;
在以下条件下, 计时器可能无法按预期时间运行: 1 、其他程序让 CPU 高负载. 2 、计时器子程序本身在计时器周期到期时仍在运行(定时子程序运行的时间超过它自己的周期), 或者有太多竞争计时器(改变 SetBatchLines 可能有帮助). 3 、计时器已经被另一个线程中断, 即另一个定时子程序, 热键子程序或自定义菜单项(这可以使用 Critical 避免). 如果这种情况发生了并且中断的线程需要很长时间才能结束, 则在此期间将有效地禁用中断的计时器. 不过, 任何其他计时器会对这个中断首个计时器的线程进行中断来继续运行. 4 、使用 Critical 或 Thread Interrupt/Priority 后脚本会变成不可中断的. 在这样的时期, 计时器不会运行. 之后, 当脚本恢复可中断时, 任何过时的计时器会尽快运行一次然后恢复到正常的调度. AHK 的解决方案: https://wyagd001.github.io/zh-cn/docs/commands/Sleep.htm#ShorterSleep |
4
chenqh OP @Thiece 比如我调用 ctrl+shift+p 调用一个功能,我怎么知道这个功能做完了呢,不 sleep 怎么办?
比如我 win+2 切换到 vscode,然后我 click,然后 ctrl+end 到文件结尾,不 sleep 不行啊 |
8
haoliang 2022-11-09 11:23:50 +08:00
我之前写过一个暗黑 3 一键分解背包中装备的 ahk 脚本,当时是通过循环监视特定位置的颜色来做的,不过由于写死了坐标,还需要对不同的分辨率做适配(就我自己用,也就不管了)。
|
9
lookStupiToForce 2022-11-09 16:49:34 +08:00 1
难写何不试试 quicker
不过不知道 quicker 对于步骤生效的判定对比 ahk 如何,我是没出现过上一个步骤没执行完就马上下一个步骤然后报错的情况 |
11
chenqh OP @lookStupiToForce 过几天再研究这个吧
|
12
ko1haha 125 天前
什么,vscode 命令不可以配置快捷键吗?
--- 至于执行顺序,加大时间呗,比如一个 250 ,还能骂它,哈哈。 不论何种工具,自动化脚本肯定会有许多问题,要完美执行,就要有完美的环境条件。 具体问题,如何检测 vscode 的命令面板已经弹出? 方法多了,不止一种哦。 随便说一种,用扩展魔改 vscode ,注入用户脚本,上 mutationobserver / settimer 在面板弹出之时,修改标题,ahk 检测到标题,就说明面板弹出了。 再说一种 ,findimage 检测特征图像 再说一种 ,acc 检测特征辅助文本 …… --- 你以为的走投无路,其实是多歧亡羊。 |