AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zeitermittlung des letzten Windows-Starts funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Zeitermittlung des letzten Windows-Starts funktioniert nicht

Ein Thema von devidespe · begonnen am 9. Mär 2018 · letzter Beitrag vom 9. Mär 2018
Antwort Antwort
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Zeitermittlung des letzten Windows-Starts funktioniert nicht

  Alt 9. Mär 2018, 17:47
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?
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Zeitermittlung des letzten Windows-Starts funktioniert nicht

  Alt 9. Mär 2018, 17:56
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 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