Ich versuche herauszufinden, wie lange der aktuelle Benutzer ungefähr im Leerlauf (z. B. this question) von Python auf einem Windows-Computer war.GetLastInputInfo und GetTickCount sind nicht miteinander konsistent
Dazu muss ich das Ergebnis von GetLastInputInfo mit dem Ergebnis von GetTickCount vergleichen. Die Ergebnisse sollten in Millisekunden angegeben werden.
(Ich erwarte Überroll alle 49,7 Tage Probleme, aber ich werde das später lösen.)
Mein Code ist einfach:
import win32api
last_active = win32api.GetLastInputInfo()
now = win32api.GetTickCount()
elapsed_milliseconds = (now - last_active)
print(last_active, now, elapsed_milliseconds)
Ich erwarte, dass zwei ähnliche große Zahlen zu erhalten, und ein Unterschied von einigen hundert Millisekunden.
Stattdessen erhalte ich Ergebnisse wie:
3978299058 -316668238 -4294967296
und
3978316717 -316650501 -4294967218
Zwischen läuft, werden sie um etwa den gleichen Betrag sowohl zu ändern, aber es ist eine große konstante Versatz zwischen ihnen, dass ich erwarte ich nicht.
Was fehlt mir?
Ich verstehe die Theorie, aber prüfe den pywin32 Code (win32apimodule.cpp: 1671) es sagt "zurück PyLong_FromUnsignedLong (lii.dwTime);" Das sieht richtig aus. – Oddthinking
Ja, ich hätte mir die tatsächlichen Zahlen genauer anschauen sollen. Das Problem besteht einfach darin, dass ein Wert als unsigned und der andere als signed zurückgegeben wird. –
Ich habe einen [Fehlerbericht] (https://sourceforge.net/p/pywin32/bugs/718/) eingereicht. Vielen Dank. – Oddthinking