循环 x 次,使用 AutoHotKey 以 x 作为参数

Loop x amount of times, with x as a parameter using AutoHotKey

我创建了一个点击屏幕特定部分的小功能。它将被使用,但在整个程序中被点击的次数不同。我希望能够输入点击次数作为参数,但是,当我尝试这样做而不是硬编码时,部分代码没有 运行 并且屏幕没有显示的循环次数点击。

注意函数 ClickMainBuilding 在定义中的变化以及下面的调用方式

这是有效的:

; ######## SETTINGS ########
#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1

; ######## FUNCTIONS ########

ClickMainBuilding(){
    Loop, 5 
    {
        Click, 927, 538 Left, , Down
        Sleep, 250
        Click, 927, 538 Left, , Up
        Sleep, 250
    }
}

ClickTradeDepot(){
    Click, 420, 705
    Sleep, 750
}

ExitTradeDepot(){
    Click, 1512, 129
    Sleep, 750
}

^!u:: ; ### MAIN ###

WinActivate,  ahk_class ThumbnailDeviceHelperWnd
Sleep, 333
WinActivate, BlueStacks ahk_class HwndWrapper[Bluestacks.exe;;5b32fde4-2355-48c5-be51-8927697e9914]
Sleep, 500
ClickMainBuilding()
Sleep, 1000
ClickTradeDepot()
Sleep, 1000
ExitTradeDepot()

Return

Esc::ExitApp  ; Exit script with Escape key

这里没有:

; ######## SETTINGS ########
#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1

; ######## FUNCTIONS ########

ClickMainBuilding(x){
    Loop, x
    {
        Click, 927, 538 Left, , Down
        Sleep, 250
        Click, 927, 538 Left, , Up
        Sleep, 250
    }
}

ClickTradeDepot(){
    Click, 420, 705
    Sleep, 750
}

ExitTradeDepot(){
    Click, 1512, 129
    Sleep, 750
}

^!u:: ; ### MAIN ###

WinActivate,  ahk_class ThumbnailDeviceHelperWnd
Sleep, 333
WinActivate, BlueStacks ahk_class HwndWrapper[Bluestacks.exe;;5b32fde4-2355-48c5-be51-8927697e9914]
Sleep, 500
ClickMainBuilding(5)
Sleep, 1000
ClickTradeDepot()
Sleep, 1000
ExitTradeDepot()

Return

Esc::ExitApp  ; Exit script with Escape key

Loop 将需要迭代的次数作为第一个参数。如果你放5,那么AHK把这个5转换成一个整数,然后迭代5次

在您的代码中,您编写了 Loop, x,它告诉 AHK 总共循环 x 次。然而与 5 不同的是,x 不能转换为整数,所以 AHK 可能会抛出错误。为了指定变量 x,而不是使用它的值作为迭代量,您需要指定这个特定的 x 实际上是一个变量。您可以这样做:

; BOTH OF THESE EXAMPLES WORK

; Legacy
Loop, %x%

; Newest
Loop, % x