Zur Verdeutlichung: Ich meine die Zeit, in der die System suspendiert/hiberniert ist, nicht der aufrufende Thread (GetTickCount() gibt die Anzahl der Millisekunden seit dem Systemstart zurück).
Antworten
Zu viele Anzeigen?Soweit ich weiß, hat GetTickCount nichts mit Threads zu tun und zählt die Zeit, seit das System gestartet wurde. Aber es ist besser zu verwenden GetTickCount64 um die 49,7-Tage-Frist zu vermeiden.
Übrigens, um zu bekommen, was Sie wollen, brauchen Sie die GetThreadTimes Funktion. Sie zeichnet die Erstellungs- und Beendigungszeit sowie die Zeit auf, die der Thread im Benutzer- oder Kernelbereich verbracht hat. So haben Sie eine gute Möglichkeit, den Zeitaufwand zu berechnen.
Ok, ich habe den "System"-Teil der Frage übersehen. Aber das ist einfach. Im Winterschlaf setzt GetTickCount die Zählung fort. Denn die Leute haben unter dem 49,7-Tage-Fehler gelitten, wenn der Computer die meiste Zeit im Ruhezustand war. Siehe Linktext Hier finden Sie weitere Informationen.
Kurze Antwort: Ja.
Längere Antwort: Lesen Sie die GetTickCount() docs: Es ist die verstrichen Zeit seit dem Systemstart, und selbst MS würde nicht behaupten, dass die Zeit stillsteht, während sich der Computer im Ruhezustand befindet...
Für alle, die eine Antwort für die Windows CE Plattform suchen, aus den Unterlagen:
http://msdn.microsoft.com/en-us/library/ms885645.aspx
können Sie lesen:
Bei Release-Konfigurationen gibt diese Funktion die Anzahl der Millisekunden seit dem Hochfahren des Geräts zurück, mit Ausnahme der Zeit, in der die System ausgesetzt war . GetTickCount beginnt beim Booten bei 0 und zählt dann von da an aufwärts.
Ja, GetTickCount enthält die Zeit des Aussetzens und des Ruhezustands.
Im folgenden Python-Skript rufe ich die Sleep-API auf, um 40 Sekunden zu warten, damit ich die Möglichkeit habe, den Computer in den Ruhezustand zu versetzen, und ich gebe die Zeit davor und danach sowie die Tick-Zahl-Differenz danach aus.
import win32api
import time
print time.strftime("%H:%M:%S", time.localtime())
before = win32api.GetTickCount()
print "sleep"
win32api.Sleep(40000)
print time.strftime("%H:%M:%S", time.localtime())
print str(win32api.GetTickCount()-before)
出力します。
17:44:08
sleep
17:51:30
442297
Wenn GetTickCount die Zeit während des Ruhezustands nicht berücksichtigen würde, wäre es viel weniger als die Zeit, die ich im Ruhezustand verbracht habe, aber es stimmt mit der tatsächlich verstrichenen Zeit überein (7 Minuten 22 Sekunden entsprechen 442 Sekunden, d. h. 442000 Millisekunden "Ticks").
- See previous answers
- Weitere Antworten anzeigen