我有一个简单的Autohotkey脚本,我想用它来确定鼠标是否在窗口内被点击。如果单击位于标题栏上或窗口的滚动条上,我希望函数失败。我的脚本看起来像这样:
LButton::
WinGetPos, X, Y, Width, Height, A
MouseGetPos, x,y
Rightmargin := Width - 50
Topmargin := Y+25
if (x < Rightmargin and y > Topmargin)
MsgBox You're Inside
return
问题是,当我运行它时,它会冻结我的机器。所有左键单击都被捕获,无法进入系统,由于某种原因,测试用例总是失败(我从未看到过MsgBox)。
你能告诉我我做错了吗?
答案 0 :(得分:2)
AutoHotkey中的变量,标签名等不区分大小写。因此,使用WinGetPos, X, Y
和MouseGetPos, x,y
,您将分配这两个变量两次,覆盖窗口的位置坐标。因此,例如,您可能希望将x
重命名为mouseX
,将y
重命名为mouseY
。
由于您显然希望当前窗口测量鼠标坐标,因此您还应在热键分配之前添加coordmode, mouse, relative
。
最后,如果您还希望将Click发送到该窗口,请在热键之前加上~
代码:~LButton::
。