Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeitermittlung des letzten Windows-Starts funktioniert nicht (https://www.delphipraxis.net/195560-zeitermittlung-des-letzten-windows-starts-funktioniert-nicht.html)

devidespe 9. Mär 2018 17:47

Zeitermittlung des letzten Windows-Starts funktioniert nicht
 
Hallo,

ich möchte an einer Stelle in meinem Programm ermitteln lassen, wann Windows zuletzt hochgefahren wurde bzw. wie lange der Startvorgang her ist. Dafür verwende ich folgende Funktion:

Delphi-Quellcode:
function GetWindowsUpTime : string;
const ticksperhour  : LongWord = 1000 * 60 * 60;
      ticksperminute : LongWord = 1000 * 60;
      tickspersecond : LongWord = 1000;
var  t, h, m, s    : LongWord;
begin
  t:=GetTickCount;
  h:=t div ticksperhour;
  Dec(t, h * ticksperhour);
  m:=t div ticksperminute;
  Dec(t, m * ticksperminute);
  s:=t div tickspersecond;
  Result:=IntToStr(h)+'h'+IntToStr(m)+'m'+IntToStr(s)+'s';
end;
Das klappt meistens auch ganz gut, aber auf einem Testsystem unter Windows 10 x64 liefert GetTickCount den Wert 193349921, was in Folge dieser Auswertung "53h 42m 29s" ergibt - das stimmt natürlich nicht.

Was kann man da optimieren bzw. hat jemand eine Idee, woran das liegen kann?

Der schöne Günther 9. Mär 2018 17:56

AW: Zeitermittlung des letzten Windows-Starts funktioniert nicht
 
Das ist richtig, seit Windows 8 wird beim Ausschalten in der Regel Windows nicht mehr heruntergefahren sondern nur der Benutzer abgemeldet und dann das System in den Ruhezustand versetzt. Deine Anzeige wann "Windows zuletzt gestartet" wurde ist somit vollkommen richtig.

Aber da hierbei große Zeitspannen anstehenden können sollte man auch nicht mehr GetTickCount sondern GetTickCount64 verwenden, denn mit GetTickCount läuft der Integer-Zähler nach weniger als 50 Tagen über.

In der Hilfe zu GetTickCount steht auch wie du feststellen kannst wann der PC "eingeschaltet" wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.

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