Code: Select all
; Written by Randy Walker (8/16/2024)
;free To use Or improve As you like
Import "" ; --- from Kernel32.dll ---
GetTickCount64() ; Modified (3/13/2025) to include this Import suggested by Axolotl
;https://www.purebasic.fr/english/viewtopic.php?p=637424#p637424
EndImport
trigger.q = (GetTickCount64() & $FFFFFFFFFFFFFFFF)/1000
hours.d = trigger / 3600 ;193.92388886213303
totalSeconds.d = hours * 3600
uptm$ = StrD(totalSeconds)
days.d = Int(totalSeconds / 86400)
remainingSeconds.d = totalSeconds - (days * 86400)
hours.d = Int(remainingSeconds / 3600)
remainingSeconds.d = remainingSeconds - (hours * 3600)
minutes.d = Int(remainingSeconds / 60)
seconds.d = Round(remainingSeconds - (minutes * 60), #PB_Round_Nearest)
Date.q = Date()
Boot.q = date-trigger
Start$ = FormatDate("%hh:%ii:%ss %mm:%dd:%yyyy",boot)
s$ = uptm$ + " Total seconds "+Chr(10)+StrD(days) + " days "+Chr(10) +StrD(hours) + " hours "+Chr(10) +StrD(minutes) + " Minutes "+Chr(10) +StrD(seconds)+ " seconds"+Chr(10)+Chr(10)+"Last boot at:"+Chr(10)+Start$
MessageRequester(" System Uptime", s$)
I added the ability to do reboot or shutdown with optional countdown. I have it on a hotkey so I can launch it and press spacebar twice for fast and convenient reboot.