2016-12-05 225 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