问VB高手一个读取系统时间的问题

[复制链接]
查看11 | 回复1 | 2007-8-6 15:01:07 | 显示全部楼层 |阅读模式
使用API函数:GetTickCount
回复

使用道具 举报

千问 | 2007-8-6 15:01:07 | 显示全部楼层
在vb中要做到微秒级的计时,用api:QueryPerformanceFrequency和QueryPerformanceCounter..
不过用这种方法有时会罢工。。。自己按实际情况决定吧。。。。用这个,你可以改一下,试试看吧!
Option Explicit
'
声明函数
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As LARGE_INTEGER) As Long
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As LARGE_INTEGER) As Long
'
声明结构
Private Type LARGE_INTEGER
LowPart As Long
HighPart As Long
End Type
Private Sub Form_Load()
Dim PFrequency As LARGE_INTEGER
'
获得高精度运行计数器的频率
QueryPerformanceFrequency PFrequency
'
延时 1000微妙
SleepEx (PFrequency.LowPart / 1000000) * 1000, 0
End Sub
' 实现延时功能
Private Function SleepEx(ByVal LowPart As Long, HighPart As Long) As Long
Dim Interval As LARGE_INTEGER
Dim Privious As LARGE_INTEGER
Dim Current As LARGE_INTEGER
'
获得高精度运行计数器的数值
Call QueryPerformanceCounter(Privious)
Current = Privious
Interval.LowPart = LowPart
Interval.HighPart = HighPart
'
通过比较两次计数器的数值的差实现精确延时
Do While (Abs((Current.HighPart * 2 ^ 16) + Current.LowPart) _
- Abs(Privious.HighPart * 2 ^ 16) + Privious.LowPart) < _
(Abs(Interval.HighPart * 2 ^ 16) + Interval.LowPart)
Call QueryPerformanceCounter(Current)
Loop
SleepEx = 0
End Function
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行