如何用AutoHotkey实现鼠标触右边缘跳转指定位置?左边缘代码改右边缘失效
修复右边缘鼠标触发问题的AutoHotkey代码
以下是修正后的右边缘版本代码,同时修复了原代码中存在的几个潜在问题:
; 获取显示器工作区域的正确坐标 SysGet, WorkArea, MonitorWorkArea ; 创建用于检测右边缘的透明GUI Gui, Color, 0x000000 Gui, +AlwaysOnTop +ToolWindow -Caption ; 计算GUI位置:右边缘向左偏移1px,高度覆盖整个工作区域 Gui, Show, w1 h%WorkAreaBottom-WorkAreaTop% x%WorkAreaRight-1% y%WorkAreaTop%, right_win WinSet, Transparent, 1, right_win ; 监听鼠标移动消息 OnMessage(0x200, "EdgeHandler") return EdgeHandler() { static countdown := 0 if (countdown = 0) { ; 设置延迟检测,避免频繁触发 SetTimer, CheckRightEdge, -100 countdown := 1 } return CheckRightEdge: MouseGetPos, , , winId WinGetTitle, winTitle, ahk_id %winId% ; 检查是否触发了右边缘的GUI if (winTitle = "right_win") { ; 将鼠标移动到目标位置(可自行修改坐标) MouseMove, 960, 300, 0 } countdown := 0 return }
关键修复点:
- GUI位置修正:右边缘的GUI需要将X坐标设为
WorkAreaRight - 1(因为GUI宽度为1px,这样才能刚好贴合屏幕右边缘),如果直接设为WorkAreaRight会导致GUI完全处于屏幕外,无法被鼠标触发。 - 标题匹配:将GUI标题改为
right_win,并同步修改检测逻辑中的标题判断,确保只有触碰右边缘GUI时才触发移动。 - 工作区域坐标正确获取:使用
SysGet, WorkArea, MonitorWorkArea正确获取工作区域的上下左右坐标,避免原代码中变量命名不规范导致的潜在错误。 - GUI高度修正:通过
WorkAreaBottom - WorkAreaTop计算工作区域的实际高度,确保GUI完全覆盖工作区域(即使任务栏不在底部也能正常工作)。
内容的提问来源于stack exchange,提问作者Albertputin Jobs
相关产品推荐
相关产品推荐

