用vb编了一个计时器软件,精度达到微秒,主要利用cpu主频来
vb6.0吧
全部回复
仅看楼主
level 11
用vb编了一个计时器软件,精度达到微秒,主要利用cpu主频来实现代码如下
ion Explicit
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
Private g_cCPU频率 As Currency
Type 精确定时器 '定时器对象
已暂停 As Boolean
CPU时间 As Double
暂停时间 As Double
End Type
Sub 全局初始化精确计时器() '使用本模块其它函数的时候,必须先调用此函数完成初始化
'其实初始化也就是取得CPU频率
QueryPerformanceFrequency g_cCPU频率
End Sub
Function 取得CPU时间() As Double '取得CPU启动以来的时间(时钟数÷频率)
Dim 计数 As Currency
QueryPerformanceCounter 计数
取得CPU时间 = 计数 / g_cCPU频率
End Function
Function 新建精确计时器() As 精确定时器 '所有的“精确定时器”对象必须用这个函数来初始化
With 新建精确计时器
.已暂停 = True '刚创建出来时是暂停状态
.CPU时间 = 取得CPU时间
End With
End Function
Sub 精确计时器开始计时(计时器 As 精确定时器) '标记“精确定时器”为运转状态
With 计时器
If .已暂停 Then
.CPU时间 = 取得CPU时间 - .暂停时间
.已暂停 = False
End If
End With
End Sub
Sub 精确计时器暂停计时(计时器 As 精确定时器) '暂停“精确定时器”的时间
With 计时器
If Not .已暂停 Then
.暂停时间 = 取得精确的时间(计时器)
.已暂停 = True
End If
End With
End Sub
Function 取得精确的时间(计时器 As 精确定时器) As Double '从“精确定时器”读数。。。
If 计时器.已暂停 Then
取得精确的时间 = 计时器.暂停时间
Else
取得精确的时间 = 取得CPU时间 - 计时器.CPU时间
End If
End Function
SRC下载:精确计时器.bas(1.56 KB, 下载次数: 32)
使用范例:(使用前必须先添加这个文件到工程中。)
新建某Form,然后粘贴下面的代码即可。运行的时候,玩法就是,按空格键,然后看标题栏上显示的时间。以秒为单位哦。
[Visual Basic]纯文本查看复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
Option Explicit
Dim 计时器 As 精确定时器
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then 精确计时器开始计时 计时器
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then 精确计时器暂停计时 计时器
End Sub
Private Sub Form_Load()
Show
全局初始化精确计时器
计时器 = 新建精确计时器
Do
Cls
Caption = 取得精确的时间(计时器)
Loop While DoEvents
End Sub
2018年04月25日 07点04分 1
level 11
[吐舌][吐舌][吐舌][吐舌][吐舌]请批评指教,应用程序在我邮箱,有兴趣的留下邮箱,我发过去
2018年04月25日 07点04分 2
level 11
[阴险][阴险][阴险][阴险][阴险][阴险]
2018年04月25日 07点04分 3
level 1
[email protected]
谢谢大佬
2018年09月25日 05点09分 4
兄弟需要学习vb吗?
2018年09月27日 15点09分
@鱼子弹🐯 大佬把程序发邮箱就行了[太开心]
2018年09月27日 15点09分
@柳小春儿 想的美
2018年09月27日 15点09分
@鱼子弹🐯 才发现你不是楼主[黑线]
2018年09月28日 05点09分
level 11

2018年09月28日 01点09分 5
level 11

2019年09月08日 03点09分 7
level 2
下完打开就是找个求大佬解决啊
2019年09月09日 12点09分 9
level 1
学习了,谢谢,不知好用否
2020年02月03日 13点02分 10
level 3
辛苦啦!
2020年02月06日 22点02分 11
1