这段代码的核心功能是拦截鼠标左键点击操作,并根据特定窗口和条件对鼠标行为进行自定义处理,例如拦截 Notepad(记事本) 的关闭按钮点击操作。
#SingleInstance Force
SetBatchLines -1
SetWinDelay 20 ; 每次WinActive命令后, 设置 20 毫秒的延迟
CoordMode Mouse
LButton::
Click Down
KeyWait LButton
Click Up
Return
; 方法一:判断标准窗口按钮来确定拦截目标【未激活也能生效】
#ifWinActive ahk_class Notepad
LButton Up::
MouseGetPos, 拦截x, 拦截y, 拦截id
SendMessage, WM_NCHITTEST := 0x84,, (拦截x & 0xFFFF) | (拦截y & 0xFFFF) << 16,, ahk_id %拦截id%
; https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-nchittest
if (ErrorLevel = 20) {
WinActivate, ahk_class Shell_TrayWnd
WinActivate, ahk_class Notepad
}
Click Up
ToolTip % "右上角按钮返回值:" ErrorLevel "`n用SendMessage取返回值有时会不对,可以自行再加其它辅助if条件"
Return
#If
/* 方法二:通过计算相对坐标,判断按钮位置来确定拦截目标
#ifWinActive ahk_class Notepad
LButton Up::
MouseGetPos, 拦截x, 拦截y, 拦截id
WinGetPos, 窗口x, 窗口y, 窗口w, 窗口h, ahk_id %拦截id%
if (拦截x>窗口x+窗口w-54*(A_ScreenDPI//96)) && (拦截x<窗口x+窗口w-0*(A_ScreenDPI//96)) && (拦截y>窗口y+0*(A_ScreenDPI//96)) && (拦截y<窗口y+34*(A_ScreenDPI//96)) { ; 从右上角计算关闭图标相对位置
WinActivate, ahk_class Shell_TrayWnd
WinActivate, ahk_class Notepad
}
Click Up
Return
#If
*/
/* 拦截记事本的关闭按钮第一版.ahk【在拦截后,会出现右键无法使用的Bug】
#IfWinExist ahk_class Notepad
LButton::
MouseGetPos, 拦截x, 拦截y, 拦截id ; 也可以拦截标准控件或者窗口坐标区域
WinGetClass, 拦截类名, ahk_id %拦截id%
if (拦截类名="Notepad") {
SendMessage, 0x84,, (拦截x & 0xFFFF) | (拦截y & 0xFFFF) << 16,, ahk_id %拦截id%
if ErrorLevel = 20
Click Up
else
Click down
} else
Click down
ToolTip % "右上角按钮返回值:" ErrorLevel "`n用SendMessage取返回值有时会不对,可以自行再加其它辅助if条件"
return
LButton Up::Click Up
#IfWinExist
*/
/* 拦截记事本的关闭按钮 - 自改版.ahk
SetBatchLines -1
CoordMode, Mouse
#IfWinActive ahk_class Notepad
LButton::
SendInput {LButton Down}
IfWinNotActive ahk_class Notepad
{
KeyWait LButton
SendInput {LButton Up}
}
return
LButton Up::
MouseGetPos, x, y
Critical
SendMessage, 0x84,, (x & 0xFFFF) | (y & 0xFFFF) << 16 ; WM_NCHITTEST
if ErrorLevel = 20 ; close button
{
Gui, LanJie:+ToolWindow
Gui, LanJie: Show, x-86 y-66 w1 h1,
Gui, LanJie: Destroy
}
SendInput {LButton Up}
Critical Off
return
#IfWinActive
*/
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)