Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi System boot time (https://www.delphipraxis.net/107452-system-boot-time.html)

peschai 28. Jan 2008 07:17


System boot time
 
Hallo
Suche einfache Delphi funktion, welche mir die System-Start-Zeit (System Boot Time) als TDateTime zurückgibt. Also wann wurde der PC das letzte mal gestartet ?
Danke

himitsu 28. Jan 2008 08:16

Re: System boot time
 
Eine einfache Delphifunktion gibt's nicht,
aber schau mal in die DP-CodeLib, dort gibt es irgendwo eine kleine Sammlung solcher Funktionen.


Die billigste Variante ist GetTickCount.

GetTickCount wird beim Windowsstart (WindowsBootTime) mit 0 gestartet und läuft in Millisekunden weiter.
also Jetzt - GetTickCount = BootTime

Delphi-Quellcode:
BootTime := Now - (GetTickCount / 86400000)
OK, Hibernate und Standby verfällschen diesen Wert, aber dafür lesen andere Funktionen richtigen Wert irgendwo aus (z.B. aus der Registry) ... also einfach mal suchen.


[add]
[dp]*uptime[/dp] [cl]*uptime[/cl]
z.B.: http://www.delphipraxis.net/internal...ect.php?t=7464

peschai 28. Jan 2008 14:16

Re: System boot time
 
Hallo
Erledigt. Code auch in CodeLibrary zur Verfügung gestellt...
Problem selbst auf folgende Art gelöst ...
Delphi-Quellcode:
function fctSystemBootUpTime:TDateTime;
var
  n1,n2: Int64;
begin
  // local init
  Result := 0.0;
  n1 := 0;
  n2 := 0;
  // local main
  QueryPerformanceFrequency(n1); // counts per second
  QueryPerformanceCounter(n2);   // counts since system boot time
  if (n1<>0) then
    begin
      n1 := Round(n2/n1);            // seconds since system boot time
      //24 hours are how much seconds?  60sec*60min*24hours = 86400 sec/day
      Result := Now - (n1/86400);
    end;
end;

sirius 28. Jan 2008 14:30

Re: System boot time
 
Wann läuft denn der counter über :gruebel: ? Ich habe das Gefühl, dass dies recht schnell passiert.

Edit: Ok. Mein Gefühl für Zahlen in diesen Bereichen ist miserabel. (Mit meinem counter schaffe ich es auf 209 Jahre)

OldGrumpy 28. Jan 2008 14:38

Re: System boot time
 
Ja, der Counter läuft SEHR schnell über, auf meinem Pentium M 1,7GHz braucht er dazu nur 163412 Jahre. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz