AHK 代码问题 - 在 AHK 中导入和定义变量?

AHK code issue - Importing and defining variables in AHK?

我是 AHK 的新手。我几天前才开始,我遇到了困难,需要帮助调试。

我希望此代码转到指定的鼠标位置并单击坐标,然后导入我的变量,因为我有许多引用相同变量的 AHK 脚本。

问题:代码当前不会移动鼠标并单击所需位置。我什至不确定它是否在点击。它只显示 ToolTip 消息和 msgbox 消息。 (将显示的消息在代码中标记为通过 [works] 工作)。我认为这可能是因为变量不知何故未定义...当 msgbox 中显示的变量在 if/else 语句中定义时,msgbox 将为空。 Clicks 也不起作用,我认为这是因为值不存在。我不知道为什么会发生这种情况。

我的代码有什么问题,发生了什么?请帮助我!

#include C:\Users\username\Desktop\vars.txt
CoordMode, Mouse, Screen
clickThing(whichThing) { ;START FUNCTION
    Sleep, 1000 ; sleep 1 sec
    Send ^h ; control h
    Sleep, 3000 ; sleep 3 sec
    if (whichThing = 1){
        goTox = %x1%
        goToy = %y1%
        ToolTip, option 1 ; display "option 1" @ cursor tip ; [works]
    } else if (whichThing = 2) {
        goTox = %x2%
        goToy = %y2%
        ToolTip, option 2 ; display "option 2" @ cursor tip ; [works]
    } else if (whichThing = 3) {
        goTox = %x3%
        goToy = %y3%
        ToolTip, option 3; display "option 3" @ cursor tip ; [works]
    } else {
        msgbox that isn't a valid choice. ; [works]
        return
    }
    msgbox %goTox% %goToy% ; msgbox will be empty...
    ; I tried this
    Sleep 1000
    MouseMove, %goTox%, %goToy%, 30
    MouseClick, left, %goTox%, %goToy%
    Sleep 500
    MouseClick, left, %goTox%, %goToy%
    Sleep 1000
    ; I also tried this
    Click %goTox%, %goToy%
} ;END OF FUNCTION

;START MAIN CODE
IfWinActive, window_name {
    clickThing(1)}
else{
    msgbox, window not active ; [works]
}

msgbox, finished ; [works]
return

vars.ahk:

; Test variables
x1 := 1
x2 := 2
x3 := 3
y1 := 4
y2 := 5
y3 := 6

编辑: 结果我的变量是空的。为什么是空的?此代码输出正确的值

#include C:\Users\user\Desktop\vars.txt
msgbox %x1%

但是当我尝试分配给一个变量时,msgbox 是空的,我收到一个错误消息,提示变量是空的。

#include C:\Users\user\Desktop\vars.txt
newvar = %x1%
msgbox = %newvar% ; gives an error that the var is empty

您的函数需要针对您要在其中访问的每个全局变量的全局语句。

像这样

clickThing(whichThing) { ;START FUNCTION


    global x1
    global x2
    global x3
    global y1
    global y2
    global y3

    Sleep, 1000 ; sleep 1 sec

    ... the rest of your code here

如果还有问题,请提供问题的内容 “#include C:\Users\user\Desktop\vars.txt”文件,没有它, 您的示例不可重现。 (由于您是 Stack Overflow 的新手: 请注意,提出问题的要求之一是提供 完整示例...)