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

Why does this A_TickCount call in AutoHotKey yield incorrect results?

谁能发现我在 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.

肯定有问题

不能确定发生了什么,但似乎来自键盘驱动程序自动重复。

这将向您展示它如何不断回忆 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

希望对您有所帮助

来自手册:

A_TickCount;系统启动后经过的毫秒数

A_TickCount 是一个只读变量,包含计算机 运行.

的时间(以毫秒为单位)

来自手册:

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