📄 40.txt
字号:
计算从开机到现在用了多少秒
下面的程序与标准的Timer控件相比,有两个同的地方:
1。该程序计算的起点是系统启动的时间,而不是从午夜开始算起。如果你想从午夜开始算起,用(Now-Int(Now))*86400这条语句就行了。
2。精度更高,标准Timer控件的Tick频率为1KHz,而该程序为1.4MHz
下面是程序的源代码:
Option Explicit
Private Declare Function osQueryPerformanceCounter Lib "Kernel32" Alias "QueryPerformanceCounter" _ (lpPerformanceCount As Currency) As Long
Private Declare Function osQueryPerformanceFrequency Lib "Kernel32" Alias "QueryPerformanceFrequency" (lpFrequency As Currency) As Long
Public Function Timer() As Single
Dim freq As Currency, count As Currency
osQueryPerformanceFrequency freq
osQueryPerformanceCounter count
Timer = count / freq
End Function
需要说明的一点是,如果你查阅API手册,你会发现API并不能识别Currency数据类型。在API手册中,osQueryPerformanceFrequencey要求的参数是一个Large_Integer的数据结构,该数据结构由两个Long类型的数据组成。Currency实际上也是按同样的方法来储存的。只不过在计算时被除以10000。因此你也可以写成:, (freq/10000) / (count/10000) = freq/count。关于上面的两个API函数,osQueryPerformanceFrequecy表示一秒内,计时器Tick了多少次;osQueryPerformanceCounter表示从开机到现在,计时器一共Tick了多少次。二者相除,就是从开机到现在过去了多少秒钟。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -