代码 WheelUp :: MouseGetPos,MouseX,MouseY PixelGetColor,颜色,%MouseX%,%MouseY% 如果(颜色= 0x282828) { 发送{sc149} } 否则(颜色<> 0x282828) { 点击,WheelUp } 返回
WheelDown::
MouseGetPos, MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%
if (color = 0x282828)
{
Send, {sc151}
}
Else if (color <> 0x282828)
{
Click, WheelDown
}
return
答案 0 :(得分:1)
我想您正在尝试在向上或向下滚动的同时在屏幕上搜索某种颜色。但是,Click, WheelDown
不会触发您自己的AHK热键,因此您将没有递归热键,为了解决此问题,您可以使用Goto
关键字显式执行相应的热键:
WheelDown::
MouseGetPos, MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%
if (color = 0x282828) {
Send, {sc151}
}
Else if (color <> 0x282828) {
Click, WheelDown
Goto, WheelDown
}
return
关于进一步的优化,我强烈建议您使用while循环,其用法如以下代码所示:
WheelUp::
w_up_stop := False
w_down_stop := True
ToolTip, Scrolling up
while (color <> 0x282828 and !w_up_stop) {
MouseGetPos, MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%
Click, WheelUp
}
Send, {sc149}
return
WheelDown::
w_up_stop := True
w_down_stop := False
ToolTip, Scrolling Down
while (color <> 0x282828 and !w_down_stop) {
MouseGetPos, MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%
Click, WheelDown
}
Send, {sc151}
return
此外,如果您找不到要搜索的颜色,我会添加一个热键来中断循环:
#If w_down_stop or w_up_stop
Esc::
w_down_stop := False
w_up_stop := False