【问题标题】:Trying to fix autohotkey code which do a function when I press a key twice尝试修复当我按两次键时执行功能的自动热键代码
【发布时间】:2021-03-20 20:44:00
【问题描述】:

我想在 aoutohotkey 中编写代码来执行此操作:如果我的字典应用程序处于活动状态,那么当我按下键“j”时,它会单击特定坐标(在此坐标中有一个打开的 Kmplayer 窗口)然后发送 Enter 然后发送 Space。这是我的代码:

#IfWinActive Oxford Advanced Learner's Dictionary
j::
    If (A_ThisHotkey = A_PriorHotkey) && (A_TimeSincePriorHotkey < 500)
        Click, 1149,305
        sleep,100
        send,{Enter}
        sleep,100
        send,{space}
return

但它并不完美。有时它可以工作,但大多数时候当我按两次“j”键时,它只是发送空格并输入。

一些细节:

  1. 我在使用 aoutohotkey 方面没有太多经验,我只是在reddit 上找到了一个双击按下代码并使用它。

  2. 对于将窗口滑动到打开的 Kmplayer,我没有找到比 Click, 1149,305 更好的解决方案,因为与许多应用程序不同,组合键 Alt+Esc 不会为牛津词典应用程序交换窗口。 (也许这个点击会导致问题)

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    如果你的 if 语句的主体不止一行,你需要{ }s。

    #IfWinActive Oxford Advanced Learner's Dictionary
    j::
        if (A_ThisHotkey = A_PriorHotkey && A_TimeSincePriorHotkey < 500)
        {
            Click, 1149,305
            sleep,100
            send,{Enter}
            sleep,100
            send,{space}
        }
    return
    

    不确定这是否是您唯一的问题。
    我无法理解你的第二个细节想说什么。

    【讨论】:

    • 非常感谢!那行得通!但有一个问题。当我按一次“ j ”时,它不会输入字母“ j ”。我该如何解决?我想这样做也许我应该在最后添加else {....},但不知道怎么做。
    • 我刚刚在最后添加了else send,{j},现在可以了!
    • 从发送命令中删除{ }。他们不属于那里。
    • 糟糕!是的,这是一个错字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多