/*鼠标复制与粘贴
脚本:Space
版本:V1.0
功能:
1、在鼠标为工字光标或激活QQ聊天窗口时,鼠标左键双击后,按中键发送Ctrl+c
2、在鼠标为工字光标或激活QQ聊天窗口时,鼠标按下并移动且松开后,按中键发送Ctrl+c
4、按下鼠标右键不松开再按鼠标左键,发送Ctrl+v。鼠标右键松开时自动去掉弹出菜单
*/
#NoEnv ;~不检查空变量为环境变量
#Persistent ;~让脚本持久运行
#WinActivateForce ;~强制激活窗口
#SingleInstance,Force ;~运行替换旧实例
ListLines,Off ;~不显示最近执行的脚本行
AutoTrim,On ;~自动去除变量中前导和尾随空格制表符
SendMode,Input ;~使用更速度和可靠方式发送键鼠点击
CoordMode,Menu ;~相对于整个屏幕
SetBatchLines,-1 ;~脚本全速执行
global copyyn
#if (A_Cursor = "IBeam") || (WinActive("ahk_class TXGuiFoundation"))
~LButton::
cos_mousedrag_treshold := 20 ; pixels
MouseGetPos, cos_mousedrag_x, cos_mousedrag_y
win1 := WinActive("A")
KeyWait LButton
MouseGetPos, cos_mousedrag_x2, cos_mousedrag_y2
win2 := WinActive("A")
if pressesCount > 0 ;>0说明SetTimer 已经启动了,按键次数递增
{
pressesCount += 1
return
}
pressesCount = 1 ;否则,这是新一系列按键的首次按键。将计数设重置为 1 ,并启动定时器:
SetTimer, WaitKeygg, 300 ;在 400 毫秒内等待更多的按键。
return
WaitKeygg:
SetTimer, WaitKeygg, off
if pressesCount = 1 ;该键已按过一次。
{
copyyn:=0
ToolTip
}
else if pressesCount = 2 ;该键已按过两次。
{
copyyn:=1
SetTimer, copyyn0, -3100
SetTimer, monitor, 100 ;100毫秒 0.1秒
}
pressesCount = 0 ;不论上面哪个动作被触发,将计数复位以备下一系列的按键
if(((abs(cos_mousedrag_x2 - cos_mousedrag_x) > cos_mousedrag_treshold
or abs(cos_mousedrag_y2 - cos_mousedrag_y) > cos_mousedrag_treshold)) and win1 = win2)
{
copyyn:=1
SetTimer, copyyn0, -3100
SetTimer, monitor, 100 ;100毫秒 0.1秒
}
return
#if
#if copyyn=1
$MButton::
SendInput ^c
copyyn:=0
return
#if
copyyn0:
Sleep 3000
if copyyn=1
copyyn:=0
ToolTip
SetTimer, monitor, Off
return
RButton & LButton::
RButton & MButton::
SendInput ^v
copyyn:=0
return
~RButton Up::
if A_PriorKey!=RButton
{
Loop, 9
{
IfWinExist, ahk_class #32768
WinClose, ahk_class #32768 ;在右键菜单出现时关闭它
Sleep 50
}
}
return
monitor:
while, copyyn=1
{
sleep 100
durTime := (28 - A_Index)*0.1
durTime := Round(durTime, 1)
ToolTip, %durTime%秒内鼠标中键复制
}
ToolTip
return
暂无讨论,说说你的看法吧