Autor Beitrag
|maSTa|
Hält's aus hier
Beiträge: 7

WIN 2000
D7 Enter
BeitragVerfasst: Sa 19.07.03 21:06 
Huhu!
Ich hoffe mal, dass das Problem hier noch nicht behandelt wurde, ich konnte jedenfalls nichts mit der Suchfunktion dazu finden.

Also, zu meinem Problem:
Ich lese die Uptime mit der GetTickCount-Funktion aus. Diese ist allerdings auf 49 Tage beschränkt, d.h, die Ticks werden nach 49 Tagen wieder auf 0 gesetzt. (Ich hoffe ma ich liege da richtig, stand jedenfalls so bei MS glaub ich).

Nun meine Frage:
Gibt es eine andere Möglichkeit die Uptime von Windows auszulesen/zu berechnen, die auch mit Uptimes jenseits der 49-Tage-Grenze zurechtkommt?
Wäre schön wenn mir irgendwer helfen könnte.

Servus
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 19.07.03 21:12 
Zähl doch einfach mit, wie oft du über 49 Tage kommst.
|maSTa| Threadstarter
Hält's aus hier
Beiträge: 7

WIN 2000
D7 Enter
BeitragVerfasst: Sa 19.07.03 21:20 
Geht leider nicht, da das Programm auch funktionieren muss, wenn es nicht beim Systemstart gestartet wurde. Also wenn ich es nach 100 Tagen Uptime starte darf da nicht 51 stehen, sondern 100.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 19.07.03 21:26 
Unter NT-basierenden Systemen kannst du kucken, wann die winlogon.exe gestartet wurde. Unter nicht NT-Systemen mußt du auf die explorer.exe zurückgreifen.

Siehe dazu meine SysInfo mit Quellcode auf meiner HP.
|maSTa| Threadstarter
Hält's aus hier
Beiträge: 7

WIN 2000
D7 Enter
BeitragVerfasst: Sa 19.07.03 21:54 
Danke für die Antwort.
Hab mir ma dein SysInfo angeguckt, allerdings finde ich im Programm nirgends eine Uptime-Anzeige und im Code auch nichts in der Richtung. Bin ich blind? ;)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 19.07.03 22:15 
Laß dir mal alle Prozesse anzeigen. Dann wählst du einen aus und klickst auf Details. Da wird dir unteranderem auch angezeigt, wann der Prozess gestartet wurde.
|maSTa| Threadstarter
Hält's aus hier
Beiträge: 7

WIN 2000
D7 Enter
BeitragVerfasst: Sa 19.07.03 22:18 
ah, nu hab ichs ;)
So könnte man die Uptime ermitteln, allerdings könnte man mit der Methode sehr leicht bescheissen. Einfach die Systemuhr um 10 Tage vorstellen und schon hat man 10 Tage mehr Uptime. Gibts vielleicht noch irgendeine andere Möglichkeit zum Auslesen?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 19.07.03 22:24 
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 21.07.03 08:04 
Hier der entsprechende Code von der DP:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
function GetWinUpTime: String; 

const 
  Days: Integer = 1000 * 60 * 60 * 24; 
  Hours: Integer = 1000 * 60 * 60; 
  Minutes: Integer = 1000 * 60; 
  Seconds: Integer = 1000; 

var 
  iTicks, iDay, iHour, iMin, iSec: Integer; 
begin 
  iTicks := GetTickCount; 
  iDay := iTicks div Days; //Tage 
  Dec(iTicks, iDay * Days); 
  iHour := iTicks div Hours; //Stunden 
  Dec(iTicks, iHour * Hours); 
  iMin := iTicks div Minutes; //Minuten 
  Dec(iTicks, iMin * Minutes); 
  iSec := iTicks div Seconds; //Sekunden 
  Result := IntToStr(iDay) + ' Tage, ' + 
            IntToStr(iHour) + ' Stunden, ' + 
            IntToStr(iMin) + ' Minuten, ' + 
            IntToStr(iSec) + ' Sekunden'; 
end;


Gruß
Tino
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.07.03 08:28 
Und genau das meinte ich nicht, sondern den Hinweis von Assarbad. Das mit GetTickcount hat er ja schon selber rausgefunden.
|maSTa| Threadstarter
Hält's aus hier
Beiträge: 7

WIN 2000
D7 Enter
BeitragVerfasst: Mo 21.07.03 14:23 
Huhu

Danke für eure Hilfe, habe es nun hinbekommen.
Per QueryPerformanceCounter lässt sich ebenfalls die Uptime errechnen.

Servus