为什么在AutoHotKey中调用A_TickCount会产生不正确的结果?

时间:2015-02-20 17:34:48

标签: function time autohotkey

有人能发现我在Windows 7中运行的AutoHotKey程序中的错误吗?

~i::iDown := A_TickCount
~i up::MsgBox, % "down at " iDown ", up at " A_TickCount ", down for " A_TickCount - iDown " ms."

在一次运行中,当我按住“i”键约5秒钟时,我得到了结果:下降到25700712,上升到25700743,下降了31毫秒。每次运行程序时,我都会得到一个不同的(看似)随机结果,通常小于100毫秒。结果似乎与我实际按住键的时间不一致。减法部分似乎是正确的,因此我的A_TickCount实现一定有问题。

2 个答案:

答案 0 :(得分:1)

无法确定是否发生了什么,但似乎来自键盘驱动程序自动重复。

这将告诉你它如何不断回忆A_tickCount

i::
iDown := A_TickCount
tooltip %iDown%
return

i up::MsgBox, % "down at " iDown ", up at " A_TickCount ", down for " A_TickCount - iDown " ms."

解决方法

~i::
iDown := A_TickCount
KeyWait, i
MsgBox, % "down at " iDown ", up at " A_TickCount ", down for " A_TickCount - iDown " ms."
return

希望有所帮助

答案 1 :(得分:0)

从手册:

A_TickCount;自系统启动以来经过的毫秒数

A_TickCount是一个ReadOnly变量,它包含计算机运行的时间(以毫秒为单位)。

从手册:

StartTime := A_TickCount
Sleep, 1000
ElapsedTime := A_TickCount - StartTime
MsgBox,  %ElapsedTime% milliseconds have elapsed.