Autor Beitrag
Cyberbob
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Sa 05.10.02 16:49 
Hi ihr,

wie kann ich erkennen wie lange Windows schon läuft? Also, mein Programm soll eigentlich nicht dirket mit Autostart gestartet werden, sondern erst nachher und dann würde ich die Uptime von Windows gerne auslesen geht das??

Cyberb :P b
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Sa 05.10.02 18:13 
Das geht mit GetTickCount().

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Sa 05.10.02 18:19 
Achtung, du solltest beachten, dass der Wert bei einer Bereichsüberschreitung wieder zu null wird! Das kann böse Fehler geben, besonders wenn Berechnungen damit durchgeführt werden!

Siehen WinAPI:
"The internal timer wraps around to zero if Windows is run continuously for approximately 49.7 days."

SMI

_________________
Wenn es im Jahre 1879 schon Computer gegeben hätte, würden diese vorausgesagt haben, daß man infolge der Zunahme von Pferdewagen im Jahre 1979 im Pferdemist ersticken würde.
(John C. Edwards, brit. Zukunftsforscher)
Cyberbob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Sa 05.10.02 18:23 
OregonGhost hat folgendes geschrieben:
Das geht mit GetTickCount().


Geht das bitte etwas genauer für einen Nicht profi ...??
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Sa 05.10.02 18:26 
ausblenden Quelltext
1:
2:
3:
4:
5:
Var 
i:longInt;
Begin
  i:= GetTickCount;
END;

i sind die millisekunden seitem windows gestartet ist

SMI

(05.10.02 22:27 Tino) Code-Tags hinzugefügt.

_________________
Wenn es im Jahre 1879 schon Computer gegeben hätte, würden diese vorausgesagt haben, daß man infolge der Zunahme von Pferdewagen im Jahre 1979 im Pferdemist ersticken würde.
(John C. Edwards, brit. Zukunftsforscher)
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 05.10.02 21:30 
Im EDH gibt es eine Funktion dafür. Und ich möchte behaupten, die hier bei AUQ.de auch schon gesehen zu haben - die schlüsselt Stunden, Minuten, Sekunden, Tage, Wochen ... :wink: ... genau auf und zeigt nicht den nackten Wert von "GetTickCount".
Cyberbob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mo 07.10.02 18:17 
MathiasSimmack hat folgendes geschrieben:
Im EDH gibt es eine Funktion dafür.


Mit dem EDH(easy delphi helper,[url]www.delphi-treff.de[/url]) hab ich das Problem nun gelöst und es sogar optisch ganz gut hinbekommen.

ausblenden volle Höhe 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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
var
  Form1: TForm1;
  Ticks : Integer;
  day, hour, min, sec : Integer;
  result:string;
const
  DAYS : Integer = 1000 * 60 * 60 * 24;
  HOURS : Integer = 1000 * 60 * 60;
  MINUTES : Integer = 1000 * 60;
  SECONDS : Integer = 1000;
implementation

{$R *.dfm}

function GetWindowsUpTime: String;
const
  DAYS : Integer = 1000 * 60 * 60 * 24;
  HOURS : Integer = 1000 * 60 * 60;
  MINUTES : Integer = 1000 * 60;
  SECONDS : Integer = 1000;
  begin;
  end;



procedure TForm1.FormCreate(Sender: TObject);

begin
 Ticks := GetTickCount;
    //GetTickCount gibt die Zeit nach einem Windowstart an

 day := Ticks div DAYS; //Tage
 dec(Ticks, day * DAYS);

 hour := Ticks div HOURS; //Stunden
 dec(Ticks, hour * HOURS);

 min := Ticks div MINUTES; //Minuten
 dec(Ticks, min * MINUTES);

 sec := Ticks div SECONDS; //Sekunden

 Result := IntToStr(day)+' Tage'+
           IntToStr(hour)+' Stunden'+
           IntToStr(min)+' Minuten'+
           IntToStr(sec)+' Sekunden';
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption:=result;
end;

stellt den Timer auf 1000 (=1sek.) und jede Sekunde wird die Uptime aktualisiert.

Cyberb :P b