不同发布时间的不同动作
Different actions at different release times
所以我得到了这段代码,它几乎可以正常工作。如果你能帮助我,它可能是一个很好的起点。:
*LButton::
Send A
KeyWait, LButton, T1
If ErrorLevel
Send C
Else
Send B
KeyWait, LButton
Return
代码的作用是定义释放操作,在我松开 LMB(鼠标左键)之后以及何时。
如果我在 1 秒内释放 LMB,它将发送 A B。如果我在 1 秒后释放它,它应该发送 A C,但在我释放 LMB 之后它不会发送。它会在 1 秒过去后立即发送 C。我想在我释放 LMB 后发送 C
如果 LMB 在 1 秒后被释放,那么我想阻止 LMB x 时间。所以我又打不中了
但是如果在1秒之前发布应该可以正常使用
英语从来都不是我的亮点..:D,希望你能理解。
假设:
- 当你说 “如果 LMB 在 1 秒后释放,我想阻止 LMB x 次。所以我不能再击中它”,你的意思是您想要它,以便在阻止期间单击 LMB 不会执行任何操作。
- 你想要它,以便只有当第二个动作被触发时(在经过一定时间后发送 'C' 的动作),块才会被激活。这将允许您重复单击鼠标发送 A B,但是您必须等待一秒钟才能发送 A C 之后的任何内容。
然后我提出的解决方案涉及一个切换变量,该变量确定在按下 LMB 时热键是否会执行任何操作。切换变量 switch
在脚本的 A C 部分激活后设置为禁用模式,但在一秒(1000 毫秒)后,变量返回到“启用”状态。 [供参考,当开关为1时,热键启用,但如果为0,则禁用。]
代码:
switch := 0
*LButton::
if(!switch){
Send A
KeyWait, LButton, T1
If ErrorLevel{
Send C
gosub, tempBlock
}
Else
Send B
KeyWait, LButton
Return
}
else
return
tempBlock:
switch:=1
SetTimer, reset, -1000
return
reset:
switch:=0
return
如果您不尝试弄乱 KeyWait
,这很容易做到。
下面的例子仍然缺少你的“阻塞”的东西。我真的不知道你的意思。
如果有不懂的地方自己加,等你解释清楚了我再补上。
*LButton::
ClickedAt := A_TickCount
SendInput, A
return
LButton Up::
if (A_TickCount - ClickedAt <= 1000)
SendInput, B
else
SendInput, C
return
所以LButton::
代表被按下的键。 LButton Up::
用于释放密钥。
在按下时,我们从 built-in 变量 A_TickCount
(docs) 中存储当前系统正常运行时间,在释放键时,我们将当前系统正常运行时间与存储的那个看看过去了多久。
SendInput 也用于代替传统的 Send
,因为 SendInput
是推荐的更快、更可靠的发送模式。
奖金,两个班轮(因为为什么不):
*LButton::SendInput, % ("A", ClickedAt := A_TickCount)
LButton Up::SendInput, % (A_TickCount - ClickedAt <= 1000) ? "B" : "C"
所以我得到了这段代码,它几乎可以正常工作。如果你能帮助我,它可能是一个很好的起点。:
*LButton::
Send A
KeyWait, LButton, T1
If ErrorLevel
Send C
Else
Send B
KeyWait, LButton
Return
代码的作用是定义释放操作,在我松开 LMB(鼠标左键)之后以及何时。
如果我在 1 秒内释放 LMB,它将发送 A B。如果我在 1 秒后释放它,它应该发送 A C,但在我释放 LMB 之后它不会发送。它会在 1 秒过去后立即发送 C。我想在我释放 LMB 后发送 C
如果 LMB 在 1 秒后被释放,那么我想阻止 LMB x 时间。所以我又打不中了
但是如果在1秒之前发布应该可以正常使用
英语从来都不是我的亮点..:D,希望你能理解。
假设:
- 当你说 “如果 LMB 在 1 秒后释放,我想阻止 LMB x 次。所以我不能再击中它”,你的意思是您想要它,以便在阻止期间单击 LMB 不会执行任何操作。
- 你想要它,以便只有当第二个动作被触发时(在经过一定时间后发送 'C' 的动作),块才会被激活。这将允许您重复单击鼠标发送 A B,但是您必须等待一秒钟才能发送 A C 之后的任何内容。
然后我提出的解决方案涉及一个切换变量,该变量确定在按下 LMB 时热键是否会执行任何操作。切换变量 switch
在脚本的 A C 部分激活后设置为禁用模式,但在一秒(1000 毫秒)后,变量返回到“启用”状态。 [供参考,当开关为1时,热键启用,但如果为0,则禁用。]
代码:
switch := 0
*LButton::
if(!switch){
Send A
KeyWait, LButton, T1
If ErrorLevel{
Send C
gosub, tempBlock
}
Else
Send B
KeyWait, LButton
Return
}
else
return
tempBlock:
switch:=1
SetTimer, reset, -1000
return
reset:
switch:=0
return
如果您不尝试弄乱 KeyWait
,这很容易做到。
下面的例子仍然缺少你的“阻塞”的东西。我真的不知道你的意思。
如果有不懂的地方自己加,等你解释清楚了我再补上。
*LButton::
ClickedAt := A_TickCount
SendInput, A
return
LButton Up::
if (A_TickCount - ClickedAt <= 1000)
SendInput, B
else
SendInput, C
return
所以LButton::
代表被按下的键。 LButton Up::
用于释放密钥。
在按下时,我们从 built-in 变量 A_TickCount
(docs) 中存储当前系统正常运行时间,在释放键时,我们将当前系统正常运行时间与存储的那个看看过去了多久。
SendInput 也用于代替传统的 Send
,因为 SendInput
是推荐的更快、更可靠的发送模式。
奖金,两个班轮(因为为什么不):
*LButton::SendInput, % ("A", ClickedAt := A_TickCount)
LButton Up::SendInput, % (A_TickCount - ClickedAt <= 1000) ? "B" : "C"