ahk 的脚本好难写啊 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
chenqh
0D
V2EX    程序员

ahk 的脚本好难写啊

  •  
  •   chenqh 2022-11-08 17:00:23 +08:00 2589 次点击
    这是一个创建于 1075 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一点都不好调

    关键还是 sleep

    要 sleep 多次才好呢

    之前 sleep 100 够了,偶尔 100 又不行了,

    改成 200 好了,OK,突然 cpu 升高 200 就不行了,

    啊啊啊,撞墙的冲动油然而生

    12 条回复    2024-07-21 15:21:41 +08:00
    hxy100
        1
    hxy100  
       2022-11-08 17:57:17 +08:00   2
    sleep 的目的是啥,如果是需要等待窗口可用来做相关的操作,有很多函数可以用( WinWait 、WinWaitActive / WinWaitNotActive 、WinWaitClose )其他情况也可以对症下药
    Thiece
        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
    chenqh
        3
    chenqh  
    OP
       2022-11-08 19:22:04 +08:00
    @Thiece 不是这个问题, 是调用其他程序功能的问题
    chenqh
        4
    chenqh  
    OP
       2022-11-08 19:23:19 +08:00
    @Thiece 比如我调用 ctrl+shift+p 调用一个功能,我怎么知道这个功能做完了呢,不 sleep 怎么办?

    比如我 win+2 切换到 vscode,然后我 click,然后 ctrl+end 到文件结尾,不 sleep 不行啊
    chenqh
        5
    chenqh  
    OP
       2022-11-08 19:25:18 +08:00
    @hxy100 比如我 vscode 调用命令,怎么办?
    Thiece
        6
    Thiece  
       2022-11-09 09:10:42 +08:00
    @chenqh
    这种要么你做个可以通讯的接口要么你用类似 Python ORB 这样的图形识别做判断。
    chenqh
        7
    chenqh  
    OP
       2022-11-09 09:31:34 +08:00
    @Thiece 太难了,我选择摆 TMD
    haoliang
        8
    haoliang  
       2022-11-09 11:23:50 +08:00
    我之前写过一个暗黑 3 一键分解背包中装备的 ahk 脚本,当时是通过循环监视特定位置的颜色来做的,不过由于写死了坐标,还需要对不同的分辨率做适配(就我自己用,也就不管了)。
    lookStupiToForce
        9
    lookStupiToForce  
       2022-11-09 16:49:34 +08:00   1
    难写何不试试 quicker
    不过不知道 quicker 对于步骤生效的判定对比 ahk 如何,我是没出现过上一个步骤没执行完就马上下一个步骤然后报错的情况
    chenqh
        10
    chenqh  
    OP
       2022-11-09 19:36:13 +08:00
    @haoliang 我肯定也不管分辨啊,都是自己用的
    chenqh
        11
    chenqh  
    OP
       2022-11-09 19:37:51 +08:00
    @lookStupiToForce 过几天再研究这个吧
    ko1haha
        12
    ko1haha  
       2024-07-21 15:21:41 +08:00
    什么,vscode 命令不可以配置快捷键吗?

    ---

    至于执行顺序,加大时间呗,比如一个 250 ,还能骂它,哈哈。

    不论何种工具,自动化脚本肯定会有许多问题,要完美执行,就要有完美的环境条件。

    具体问题,如何检测 vscode 的命令面板已经弹出?

    方法多了,不止一种哦。

    随便说一种,用扩展魔改 vscode ,注入用户脚本,上 mutationobserver / settimer 在面板弹出之时,修改标题,ahk 检测到标题,就说明面板弹出了。

    再说一种 ,findimage 检测特征图像

    再说一种 ,acc 检测特征辅助文本

    ……

    ---


    你以为的走投无路,其实是多歧亡羊。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2480 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 11:13 PVG 19:13 LAX 04:13 JFK 07:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86