PC Einschaltzeit ermitteln

Anfängerfragen zum Programmieren mit PureBasic.
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

PC Einschaltzeit ermitteln

Beitrag von HemSA »

Hallole,
habe mal vor langer Zeit einen kurzen Kodeschnipsel gesehen wo man die Einschaltzeit vom PC ermittlen kann.

Hat da jemand noch den Link, habe es mit der Suche probiert, kam aber nichts zurück was ich suche.

Danke schon mal.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: PC Einschaltzeit ermitteln

Beitrag von mk-soft »

Eben mal auf die schnelle

Windows Only:

Code: Alles auswählen

; Retrieves the number of milliseconds that have elapsed since the system was started.
Import ""
  GetTickCount64()
EndImport

Procedure WindowsStartTime()
  Protected r1, ElapsedTime.q
  
  ElapsedTime = GetTickCount64()
  r1 = Date() - ElapsedTime / 1000
  ProcedureReturn r1
EndProcedure

Debug FormatDate("%YYYY.%MM.%DD %HH:%II:%SS", WindowsStartTime())
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: PC Einschaltzeit ermitteln

Beitrag von jacdelad »

Meinst du das?
http://forums.purebasic.com/english/vie ... p?p=605033
Das wurde erst kürzlich rausgekramt.
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: PC Einschaltzeit ermitteln

Beitrag von Macros »

Äquivalente Funktionen für Linux:

Die Uptime auslesen und von der aktuellen Zeit abziehen:
Es werden zwei Werte in /proc/uptime angegeben, der erste sind die Sekunden seit Start, der zweite die Sekunden in denen das System auch lief.
Wir wollen nur den ersten.

Code: Alles auswählen

Procedure LinuxStartTime()
  Protected file, time = -1
  file=ReadFile(#PB_Any,"/proc/uptime")
  If file
    time=Date()-Val(StringField(ReadString(file),1," "))
    CloseFile(file)
  EndIf
  ProcedureReturn time
EndProcedure

oder in UTC:
Hier fragen wir wann das immer beim booten erstellte Dateisystem /proc erstellt wurde.

Code: Alles auswählen

Procedure LinuxStartTime()
  Protected prog, time
  prog=RunProgram("stat","-c %Z /proc/","",#PB_Program_Read|#PB_Program_Read|#PB_Program_Open)
  time=Val(ReadProgramString(prog))
  CloseProgram(prog)
  ProcedureReturn time
EndProcedure
Bild
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Re: PC Einschaltzeit ermitteln

Beitrag von HemSA »

Hallole,
erst mal danke.

Habe Windows.
mk-soft, ich bekomme da immer unwirkliche Werte. Mal Juli, mal 1 Stunde vor meiner Zeit obwohl der PC schon seit morgen (seit 14 Stunden an ist)
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PC Einschaltzeit ermitteln

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Re: PC Einschaltzeit ermitteln

Beitrag von HemSA »

Hallo RSBasic,
ich bekomme da immer eine Fehlermeldung: Linker error.

Werde es morgen mal mit einer aelteren PB Version probieren.

Bei der 6.01 Version schlaegt immer der Virenscanner an, vielleicht hat Version 6.02 auch noch andere Probleme.

Danke jedenfalls schon mal.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Re: PC Einschaltzeit ermitteln

Beitrag von HemSA »

Hallo mk-soft,
auch mit der Version 5.73 habe ich falsche Werte.

2023.07.14 23:08:50

Und das obwohl ich den Laptop erst heute Morgen eingeschaltet habe.

Mit Debug GetTickCount64() bekomme ich 3326490640 also ca 38 Tage was auch mit dem Ergebnis übereinstimmt.
Mit Debug ElapsedTime.q bekomme ich den Wert: 0 was ich nicht verstehe, es sollte ja der gleiche Wert wie
Debug GetTickCount64()sein oder?
Ich habe dann auch alle ElapsedTime in ElapsedTime.q umbenannt was aber am Ergebnis kein Unterschied macht.

Irgendwie stehe ich da gerade auf dem Schlauch.

Danke schon mal für die Tips.

Was die anderen Beispiele angeht habe ich immer den Fehler:

PureBasic - Linker error
POLINK: fatal error
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: PC Einschaltzeit ermitteln

Beitrag von H.Brill »

Wenn es für Windows sein soll und die CMD-Konsole kein Hindernis ist :

systeminfo | find "Systemstartzeit" > Zeit.txt

> Zeit.txt schreibt sie in die Datei. Kann man aber auch weglassen
und die Konsole auslesen.
PB 6.10
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Re: PC Einschaltzeit ermitteln

Beitrag von HemSA »

Hallo H. Brill,
Danke, aber das ist jetzt mal ein Dreck.
Wenn ich nur mal systeminfo eingebe steht da tatsaechlich: System Boot Time: 14.07.2023, 23:08:49 drin.

Wie kann das sein, wenn ich den Rechner jeden Tag ganz herunterfahre?

Danke nochmal für den Tip, dachte immer es stimmt was nicht obwohl alles richtig funktionierte. Da soll man erst mal draufkommen.
Auf meinem Firmenrechner zeigt es die richtige Zeit an, heute Morgen.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Antworten