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 DevidEspenschied · begonnen am 9. Mär 2018 · letzter Beitrag vom 9. Mär 2018
Antwort Antwort
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#1

Zeitermittlung des letzten Windows-Starts funktioniert nicht

  Alt 9. Mär 2018, 18: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
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Zeitermittlung des letzten Windows-Starts funktioniert nicht

  Alt 9. Mär 2018, 18: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 03:11 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