40.txt

来自「介绍VB里的各种控件的使用方法,窗口控制,图像编程以及OCX等内容,还提供了一个」· 文本 代码 · 共 30 行

TXT
30
字号
计算从开机到现在用了多少秒

下面的程序与标准的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 + =
减小字号Ctrl + -
显示快捷键?