【问题标题】:IF command autohotkey loopIF 命令自动热键循环
【发布时间】:2014-08-04 18:23:09
【问题描述】:

我的 AHK 循环命令有问题,希望有人能帮助我。我有一种情况,我必须每天连接到客户站点并通过一些击键(单击提交、输入等)来验证自己。如果我那天第一次连接到客户,我必须验证一个原因。那天与该客户建立的任何其他服务器的任何连接我都不需要输入原因。如果我输入了当天的原因,则此循环效果很好:

#+r::
Loop
{
WinWait, Search - Google Chrome
IfWinNotActive, Search - Google Chrome, WinActivate1817, Search - Google Chrome
WinWaitActive, Search - Google Chrome
Sleep, 100
Send, {ENTER}
WinWait, Search Hosts - Google Chrome
IfWinNotActive, Search Hosts - Google Chrome, WinActivate, Search Hosts - Google Chrome
WinWaitActive, Search Hosts
Send, +{TAB}+{TAB}{ENTER}
}
return

这是我的问题,我还需要运行这个循环:

#+s::
Loop
{
WinWait, CRM Information
IfWinNotActive, CRM Information, WinActivate, CRM Information
WinWaitActive, CRM Information
Send, +{TAB}+{TAB}+{TAB}HPF{ENTER}
}
return

我知道我一次只能运行一个循环。基本上我想要发生的是有某种 If/else 语句。我总是需要运行第一个脚本,但如果这是我当天第一次连接到客户,则只需要运行第二个脚本。所以我需要把第二个合二为一。我总是需要第一个运行,如果它看到 CRM Information chrome 屏幕标题栏运行第二部分,如果它没有看到它,则循环回到开头。

我希望这是有道理的!

【问题讨论】:

    标签: loops autohotkey


    【解决方案1】:

    始终使用来自http://ahkscript.org/ 的 AutoHotkey(当前版本,新官网)!来自 autohotkey.com 的 AutoHotkey 已过时,使用它运行脚本时可能会遇到一些问题!

    如果我理解正确,您需要在按下热键时运行第一个脚本,但只有在第一次按下热键时才运行第二个脚本。我制作了一个脚本,在你运行它之后,它会在你第一次按下热键后执行第一个和第二个脚本。所有后续的热键按下将只执行第一个脚本。这是脚本:

    runcounter:=0
    
    #+r::
    Loop
    {
        WinWait, Search - Google Chrome
        IfWinNotActive, Search - Google Chrome, WinActivate1817, Search - Google Chrome
        WinWaitActive, Search - Google Chrome
        Sleep, 100
        Send, {ENTER}
        WinWait, Search Hosts - Google Chrome
        IfWinNotActive, Search Hosts - Google Chrome, WinActivate, Search Hosts - Google Chrome
        WinWaitActive, Search Hosts
        Send, +{TAB}+{TAB}{ENTER}
    
        runcounter:= runcounter + 1
    
        if (runcounter = 1)
        {
            Loop
            {
                WinWait, CRM Information
                IfWinNotActive, CRM Information, WinActivate, CRM Information
                WinWaitActive, CRM Information
                Send, +{TAB}+{TAB}+{TAB}HPF{ENTER}
            }
        }
    
    }
    return
    



    编辑 从评论中我了解到您有 3 个脚本。第一个是Search - Google Chrome,第二个是Search Hosts - Google Chrome,第三个是CRM Information。现在您需要在脚本第一次运行时运行以运行所有三个脚本 (1,2,3)。所有后续运行都应该只运行第一个脚本。那是你想要脚本做的吗?这是它的代码:

    runcounter:=0
    
    #+r::
    Loop
    {
        WinWait, Search - Google Chrome
        IfWinNotActive, Search - Google Chrome, WinActivate1817, Search - Google Chrome
        WinWaitActive, Search - Google Chrome
        Sleep, 100
        Send, {ENTER}
    
        runcounter:= runcounter + 1
    
        if (runcounter = 1)
        {
            Loop
            {
    
                WinWait, Search Hosts - Google Chrome
                IfWinNotActive, Search Hosts - Google Chrome, WinActivate, Search Hosts - Google Chrome
                WinWaitActive, Search Hosts
                Send, +{TAB}+{TAB}{ENTER}
    
                WinWait, CRM Information
                IfWinNotActive, CRM Information, WinActivate, CRM Information
                WinWaitActive, CRM Information
                Send, +{TAB}+{TAB}+{TAB}HPF{ENTER}
            }
        }
    
    }
    return
    

    【讨论】:

    • 它定义帮助我保持球滚动,但不完全是我正在寻找的。基本上,可以显示 3 个可能的屏幕。
    • 搜索 - 谷歌浏览器是第一个并且总是会出现,搜索主机 - 谷歌浏览器是第二个并且总是会出现,CRM 信息是第三个并且只有在第一个才会出现一天与客户联系的时间。所以我总是希望循环去 1 > 2 回到 1 但我希望它去 t 1 > 2 > 3 如果第一次连接到客户当然又回到 1,这有帮助吗?
    • @user1879840 我编辑了我的答案。在我的回答中查看 EDIT 下面。这就是你想让脚本做的事情吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多