单击命令中的计算
Calculations inside Click command
这里是简单的代码:
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
由于某种原因,第一个和第二个示例不起作用。我该如何解决?
简短的回答:你无法修复它。文档指出 "%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%
}
为 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 中几乎所有命令的包装函数——希望有一天我能把它放到网上。
这使用 Click
和表达式 expression mode:
winGetActiveStats, title, width, height, topLeftX, topLeftY
click % width - 30 "," height - 30
这里是简单的代码:
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
由于某种原因,第一个和第二个示例不起作用。我该如何解决?
简短的回答:你无法修复它。文档指出 "%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%
}
为 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 中几乎所有命令的包装函数——希望有一天我能把它放到网上。
这使用 Click
和表达式 expression mode:
winGetActiveStats, title, width, height, topLeftX, topLeftY
click % width - 30 "," height - 30