我想每 0.005 秒做某一件工作, 所以撰写了以下程序: Dim tm1 As Single Do tm1 = Timer While Timer - tm1 < 0.005 ' 等于 0.005 秒 DoEvents Wend ...做某一件工作 Loop 但实际上, 在 While 循环里面, Timer 函数几乎每次都得到相同的时间,只有大约隔了 0.05秒才会得到不同的时间, 也就是说 Timer 的准确性只有 0.05 秒,但我希望进行的工作却是每 0.005 秒一次, 该怎么办呢?可以改用 Windows API 的 timeGetTime 函数, 此一函数会传回 Windows 开机以来所经过的时间,时间单位是 1/1000 秒, 举例来说, 开机经过 2 分钟, 则传回值等于 2*60*1000, timeGetTime 的优点是时间可以精确到 1/1000 秒, 所以可以用来解决上述的问题,细节如下:
1. API 的声明: Private Declare Function timeGetTime Lib "winmm.dll" Alias "timeGetTime" () As Long 注:如果以上的声明放在「一般模块」底下, 应将 Declare 之前的 Private 保 留字去掉。
2. 程序范例: Dim tm1 As Long Do tm1 = timeGetTime While timeGetTime - tm1 < 5 ' 等于 5/1000 = 0.005 秒 DoEvents Wend ...做某一件工作 Loop |
关键词: 运用timeGetTime函数更精准地计算时间差