这是一个简单的代码:
f1::
winGetActiveStats, title, width, height, topLeftX, topLeftY
;Doesn't work:
;click, %width% - 30, %height% - 30
;As well as this:
;click, (%width% - 30), (%height% - 30)
;Works fine:
x := width - 30, y := height - 30
click, %x%, %y%
return
由于某种原因,第1和第2个例子不起作用。我怎么解决它?
答案 0 :(得分:1)
简短的回答:你无法修复它。文档说明"%x%,%y%:由于click不支持表达式,因此变量应以百分号括起来。" - https://autohotkey.com/docs/commands/Click.htm
因此,如果您经常需要这样做,您可以创建一个函数
f1::
MyClick()
return
MyClick()
{
winGetActiveStats, title, width, height, topLeftX, topLeftY
x := width - 30, y := height - 30
Click, %x%, %y%
}
答案 1 :(得分:1)
为Click
命令创建一个包装函数:
Click(x, y)
{
Click %x%, %y%
}
并使用此代码:
f1::
winGetActiveStats, title, width, height, topLeftX, topLeftY
Click(width - 30, height - 30)
return
使用WinGetActiveStats
:
ByRef
等命令执行此操作
WinGetActiveStats(ByRef title, ByRef width, ByRef height, ByRef topLeftX, ByRef topLeftY)
{
WinGetActiveStats title, width, height, topLeftX, topLeftY
}
结果是一种干净,一致且直接的调用命令的方式,类似于C:
f1::
WinGetActiveStats(title, width, height, topLeftX, topLeftY)
Click(width - 30, height - 30)
return
这可以通过几乎所有的AutoHotkey命令来完成,并使AutoHotkey的编程变得更加容易,代码更具可读性,从而消除了主代码中%…%
的所有使用。我个人有一个模块,其中包含AutoHotkey中几乎所有命令的包装函数 - 希望有一天我会把它放到网上。
答案 2 :(得分:1)
Click
与表达式结合使用
winGetActiveStats, title, width, height, topLeftX, topLeftY
click % width - 30 "," height - 30