; By Tmz
#NoEnv
#InstallMouseHook
#InstallKeybdHook
#KeyHistory 499
SetBatchLines -1
CoordMode, Mouse, Screen ;全局获取模式

cursor_dbclick_gaptime := 100 ;鼠标两次点击事件间隔时间小于这个时间判断为双击
cursor_drag_gaptime := 300 ;鼠标按下到弹起时间大于这个时间判断为拖动
cursor_over_dist := 30 ;鼠标横扫的像素大于等于这个值时认为是拖动
LB_down_cursor := 0 ;按下时鼠标的形状
LB_down_posx := 0

~LButton::
LB_down_cursor := A_Cursor
MouseGetPos, LB_down_posx
if(A_PriorHotkey="~LButton up" && A_TimeSincePriorHotkey<=cursor_dbclick_gaptime && A_Cursor="IBeam" ) { ; 判断鼠标双击事件
  tooltip dbclick
}
return

~LButton up::
; tooltip % A_PriorHotkey "," A_TimeSincePriorHotkey
MouseGetPos,current_posx
if(A_PriorHotkey="~LButton" && A_TimeSincePriorHotkey>=cursor_drag_gaptime ) {  ; 判断鼠标拖动事件
  if((LB_down_cursor="IBeam" && A_Cursor="IBeam")&& abs(current_posx-LB_down_posx)> cursor_over_dist) {  ; 限制鼠标形状的双击
    tooltip dragging
  }
  return
}
return

; 最后关于性能和是否影响系统点击的问题,使用~是通过钩子函数来实现事件的传递,比如点击事件可能被多个程序hook,我们只不过在上面再加了一个hook,我们的hook会立即返回不会打断整个hook链,理论上来说多一个hook就多一些时间,但是这个影响微乎其微,除非直接返回1直接中断当前事件传递,才会影响系统的点击事件。实测在fps游戏中也没任何影响。

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。