Windowsマシン上でPythonから現在のユーザーがアイドル状態になっている時間(約this questionなど)をどれくらいの間、整理しようとしています。GetLastInputInfoとGetTickCountが一致していません
これを行うには、私はGetLastInputInfoの結果と GetTickCountの結果を比較する必要があると考えます。結果はミリ秒単位である必要があります。
(私はすべての49.7日のロールオーバー問題を期待していますが、私はその後で解決します。)
私のコードは単純です:私は2つの類似した大規模な番号を取得することを期待
import win32api
last_active = win32api.GetLastInputInfo()
now = win32api.GetTickCount()
elapsed_milliseconds = (now - last_active)
print(last_active, now, elapsed_milliseconds)
、および数百ミリ秒の違い。
3978299058 -316668238 -4294967296
と実行の間
3978316717 -316650501 -4294967218
、彼らは両方ともほぼ同じ量だけ変化しているが、そのI、それらの間に大きなオフセット定数があります:
はその代わり、私のような結果を得ます期待していない。
私には何が欠けていますか?
私は理論を理解していますが、pywin32コード(win32apimodule。cpp:1671)、「return PyLong_FromUnsignedLong(lii.dwTime);」と表示されます。右に見える。 – Oddthinking
うん、実際の数字をもっと綿密に調べたはずです。問題は、単純に、一方の値が符号なしとして返され、もう一方の値が符号付きとして返されることです。 –
私は[バグ報告](https://sourceforge.net/p/pywin32/bugs/718/)を提出しました。ありがとう。 – Oddthinking