2016-12-05 229 views

回答

4

GetTickCount的

GetTickCount函数获取自系统启动之后所经过的毫秒数。它仅限于系统定时器的分辨率。要获得系统计时器分辨率,请使用GetSystemTimeAdjustment函数。

DWORD GetTickCount(VOID); 

参数

此函数没有参数。

备注

所经过的时间被存储为一个DWORD值。因此,如果系统连续运行49.7天,时间将回到零。

库:使用KERNEL32.LIB。

API调用需要声明,请参阅Declare的帮助。从库名称我们知道DLL名称是kernel32.dll。

Public Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount"() As Long 

要使用

msgbox GetTickCount() 

察觉这是个无符号。 VBA将所有多头的签名,以便更大的数字将打印为负数,只是没有对他们做算术..

另一种方法是使用WMI。

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 

Set colItems = objWMIService.ExecQuery("Select * From Win32_OperatingSystem") 

For Each objItem in colItems 
    msgbox objItem.lastbootuptime & " " & objItem.caption 
Next 
+0

打我给它。 'GetTickCount'肯定比WMI的表现要好。 – Comintern

+0

可能是一个想法,也包括64位声明,也就是'#If VBA7 Then''公开声明PtrSafe函数GetTickCount Lib“kernel32”别名“GetTickCount”()只要' '#Else' 'Public声明功能的GetTickCount库 “KERNEL32” 别名 “的GetTickCount”()作为Long' '#END If'。 (我通常不会包含'Alias'位,但根据您的答案中的内容,我希望我已将它正确添加到该代码中。) – YowE3K

+0

我的声明来自VB6的API查看器。我复制并粘贴它。 – 2016-12-05 18:41:30