【发布时间】:2020-06-25 20:22:49
【问题描述】:
我对 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
【问题讨论】:
-
您在哪里定义 x1、x2、x3 等?他们对我来说似乎是空的。如果在外面定义,需要在函数内标记为“全局”,否则为空
-
它们是在 vars.txt 中定义的!即使我不会在函数之外使用它们,我是否需要用全局标记它们?当我导入变量时,它们不是全局的吗?
-
我尝试在 if/else 语句中添加
global goTo = %var%,现在它说 var 为空。为什么是空的?不应该从文本文件中导入吗?
标签: autohotkey