我试图将光标垂直向下移动,直到它到达显示器的底部(1500),然后通过将其移回初始位置使其环绕。
遇到的问题是每次触发 Wheeldown 时 MouseGetPos 也会重新评估。
我可以尝试在第一次运行脚本时评估 MouseGetPos,但它仍然不准确,因为脚本可能会在触发滚轮之前运行一个小时。
到目前为止,这是我的代码,谢谢!
WheelDown::
MouseGetPos, xpos1, ypos1
xpos2 := xpos1
ypos2 := ypos1
MouseMove, % xpos2 +0, % ypos2 +90
if (ypos2 > 1500)
MouseMove, %xpos1%, %ypos1%
Return
esc::ExitApp
其他方法可能是可能的,但最简单的答案可能会明确定义您想要滚动回的“初始位置”是什么。这样做的一种方法是在调用时监视关键状态
WheelDown::
:前任。cursor_looping.ahk
简而言之,对于上面的示例脚本,如果您按下 egF7然后用鼠标滚轮向下滚动一次,鼠标的原始位置将存储在
initial_y_position
. 这个值是持久的。它不会被覆盖,除非您:再次按下F7并向下滚动以设置新位置(不需要清除之前的位置)。
按 egF4并向下滚动以返回默认行为(即,无论您滚动多长时间,鼠标都将停留在屏幕底部)。
关闭脚本。
注意事项
虽然 F-Key/Scroll down 方法在我的估计中使用起来非常直观,但请记住它确实适用于每次滚动。你需要释放前。F7在第一次滚动以使事情正常工作之后(假设您的鼠标已经位于
y
您想要的位置)。要清除头寸,请记住您需要按 ex。F4并向下滚动至少一次。在这种情况下,多个卷轴不会伤害任何东西。
GetKeyState()
仅适用于单个按键,因此您对要监控的按键的选择可能会受到限制。ypos > 1500
比较重要。这会影响脚本的运行方式。例如,如果 Windows 正在扩大您的桌面,则 1920x1080 分辨率实际上可能仅在 150% 大小下提供约 800 像素的滚动距离,以便换行正常工作(例如,ypos > 800
不是ypos > 1080
)。在这种情况下,无法滚动到 1080,因此永远不会触发此部分。参考