可以修改以下脚本以便键 " CL"火灾" www.google.com"就好像" cl"按键 都按了500毫秒?
原因是因为部分键入文本有时候键是" cl"快速连续按下然后触发" www.google.com"
~l::
If (GetKeyState("c","p") && GetKeyState("l","p")) {
Send, {Backspace Down}{Backspace Up}{Backspace Down}{Backspace Up}
Run, "www.google.com"
}
Return
答案 0 :(得分:4)
使用A_TickCount
可能是个不错的选择。
~l::
duration := 0
If (GetKeyState("c","p") && GetKeyState("l","p"))
{
start := A_TickCount
While (GetKeyState("c") && GetKeyState("l"))
Sleep, 1
duration := A_TickCount - start
}
if (duration > 500)
Run, "www.google.com"
Return
答案 1 :(得分:1)
这似乎可以解决问题:
~c::
~l::
If (GetKeyState("c","p") && GetKeyState("l","p")) {
Send, {Backspace Down}{Backspace Up}{Backspace Down}{Backspace Up}
sleep, 100
If (GetKeyState("c","p") && GetKeyState("l","p")) {
Run, "www.google.com"
}
Return
}
Return
答案 2 :(得分:0)
[T]他只能在特定的持续时间内编程一个键是使用down命令然后使用带有(手动输入的时间)的wait函数然后使用up命令[。]
所以,您可以通过在当前if块中放置一个计时器然后另一个if块来解决这个问题,尽管这听起来不错。
答案 3 :(得分:0)
500毫秒的延迟可能导致不受控制的密钥重复,因此我们无法再可靠地删除按下的密钥。所以我的建议是找到重复延迟,只等待这么长的减去~150毫秒:
~c::
~l::
If (GetKeyState("c","p") && GetKeyState("l","p")) {
If (!GetKeyState("c","p") || !GetKeyState("l","p"))
Return
DllCall("SystemParametersInfo", UInt, 0x16, UInt, 0, UIntP, RepeatDelay, UInt, 0) ;get the key repeat delay
Sleep % (RepeatDelay+1)*250-150
If (GetKeyState("c","p") && GetKeyState("l","p")) {
SendInput, {c up}{l up}{BS}{BS}
Run, www.google.com
}
}
Return