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 的新手:
请注意,提出问题的要求之一是提供
完整示例...)
我是 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 的新手: 请注意,提出问题的要求之一是提供 完整示例...)