这段代码的核心功能是拦截鼠标左键点击操作,并根据特定窗口和条件对鼠标行为进行自定义处理,例如拦截 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)