Autohotkey 如何优化此代码以使用其他热键?

Autohotkey 如何优化此代码以使用其他热键?,autohotkey,autologin,Autohotkey,Autologin,我创建了这个脚本来自动登录游戏。它工作正常,但有多个帐户(^!2::%acc2%%pw2%…等等)。我不想在每个热键下单独复制代码,而是想将它们组合起来,但我不知道如何组合 ;Autologin #1. ^!1:: ImageSearch,ExistUser_X,ExistUser_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\ExistUser.bmp If !ErrorLevel { Click,%ExistUser_X%,%ExistUse

我创建了这个脚本来自动登录游戏。它工作正常,但有多个帐户(^!2::%acc2%%pw2%…等等)。我不想在每个热键下单独复制代码,而是想将它们组合起来,但我不知道如何组合

;Autologin #1.
^!1::
ImageSearch,ExistUser_X,ExistUser_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\ExistUser.bmp
If !ErrorLevel
{
    Click,%ExistUser_X%,%ExistUser_Y%
    ImageSearch,Login_X,Login_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\Login.bmp
    Click,%Login_X%,%Login_Y%
    If !ErrorLevel
        Send,%acc1%{Tab}%pw1%{Enter}
    Else
        MsgBox,The login page is not visible.
    Return
}
Else If ErrorLevel=1
{
    ImageSearch,Login_X,Login_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\Login.bmp
    Click,%Login_X%,%Login_Y%
    If !ErrorLevel
        Send,%acc1%{Tab}%pw1%{Enter}
    Else
    MsgBox,The login page is not visible.
    Return
}
Else
MsgBox,The login page is not visible.
Return
对它的功能有点了解当你点击热键时,它会搜索一个按钮(ExistUser.bmp)并单击它(如果有)。然后它将进入真正的登录页面(并确保它是实际页面),在那里它将发送帐户详细信息(%acc1%和%pw1%)。如果用户手动单击ExistUser按钮,它将检查登录页面,然后发送详细信息。如果两个页面都找不到,就会抛出一个错误MsgBox


谢谢你的帮助,谢谢

为什么不将各种帐户和密码存储在二维数组中,并在循环中运行代码呢

大概是这样的:

Loop, read, %A_ScriptDir%\Login.txt ; in username{Tab}Password{NewLine} format
{
    RecordNumber:=A_Index
    Loop, parse, A_LoopReadLine, %A_Tab% ; uses tab to separate items
    {
        Array_%RecordNumber%_%A_Index% := A_LoopField
    }
}
MaxRecords:=RecordNumber

Loop, %MaxRecords% 
{
        acc1:=Array_%A_Index%_1
        pw1:=Array_%A_Index%_2
        Run your code here
}
Return
在文本文件中添加更多{Tab}分隔项(例如,唯一的按钮位置)会自动存储在数组中,作为数组_u%A_索引%3、数组%A_索引%_4等,并可在循环代码中使用

或者,如果要使用Ctrl+Alt+1、Ctrl+Alt+2等来启动它,请为每个热键定义acc1和pw1并运行代码

;Autologin #1.
Return

^!1::
acc1=UserName
pw1=passwd
GoSub, MyScript
Return

^!2::
acc1=UserName2
pw1=passwd2
GoSub, MyScript
Return


MyScript:
ImageSearch,ExistUser_X,ExistUser_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\ExistUser.bmp
If !ErrorLevel
{
    Click,%ExistUser_X%,%ExistUser_Y%
    ImageSearch,Login_X,Login_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\Login.bmp
    Click,%Login_X%,%Login_Y%
    If !ErrorLevel
        Send,%acc1%{Tab}%pw1%{Enter}
    Else
        MsgBox,The login page is not visible.
    Return
}
Else If ErrorLevel=1
{
    ImageSearch,Login_X,Login_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\Login.bmp
    Click,%Login_X%,%Login_Y%
    If !ErrorLevel
        Send,%acc1%{Tab}%pw1%{Enter}
    Else
    MsgBox,The login page is not visible.
    Return
}
Else
MsgBox,The login page is not visible.
Return

谢谢你的帮助,但我有点困惑。如何将热键(第一个acc/pw为Ctrl+Alt+1,第二个acc/pw为Ctrl+Alt+2等)集成到脚本中?谢谢。好的,很明显,原来的代码不是你自己写的。我会把它添加到原始答案中。我自己写的,但我很容易弄糊涂:p。谢谢你的帮助!