尝试确定鼠标是否在窗口区域内单击

时间:2015-03-01 23:06:39

标签: autohotkey

我有一个简单的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)。

你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

AutoHotkey中的变量,标签名等不区分大小写。因此,使用WinGetPos, X, YMouseGetPos, x,y,您将分配这两个变量两次,覆盖窗口的位置坐标。因此,例如,您可能希望将x重命名为mouseX,将y重命名为mouseY

由于您显然希望当前窗口测量鼠标坐标,因此您还应在热键分配之前添加coordmode, mouse, relative

最后,如果您还希望将Click发送到该窗口,请在热键之前加上~代码:~LButton::