我想实现一个简单的热键,它将根据按住的时间执行两个操作之一,
500
毫秒,则 foo
bar
if
/else
逻辑应该是直接的,但我很难确定自从按下该键以来已经过了多长时间:
#singleinstance, force
#NoEnv
Space::
StartTime := A_TickCount
tooltip,% "space is down: " StartTime
return
Space up::
tooltip,% "space is up: " A_TickCount - StartTime
return
Esc:ExitApp
上面的例子,当我释放
space
时,即使我长时间按住A_TickCount - StartTime
,76
的总和也只是随机的小数毫秒,例如75
、122
、space
。我觉得不对。
我知道有很多脚本在处理,但它们都在处理第 N 次点击按钮,而我需要知道按住某个键多长时间。
我对
A_TickCount
代表什么感到困惑。是操作系统启动后的时间吗?文档说“系统”,但我不确定。
在您的示例中,空格(-向下)热键被重复触发,因此结果是随机的。 要获得正确的持续时间,请使用 KeyWait 代替:
$Space::
StartTime := A_TickCount ; elapsed time in milliseconds since the system was started
tooltip,% "space is down: " StartTime
KeyWait, Space ; waits for Space to be released
tooltip,% "space is up: " A_TickCount - StartTime ; elapsed time since the key has been pressed
return