gpt4 book ai didi

python - GetLastInputInfo 和 GetTickCount 不一致

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:51 25 4
gpt4 key购买 nike

我正在尝试通过 Windows 计算机上的 Python 计算出当前用户大约空闲了多长时间(例如 this question )。

为此,我想我需要比较 GetLastInputInfo 的结果结果是 GetTickCount 。结果应以毫秒为单位。

(我预计每 49.7 天就会出现一次滚动问题,但我稍后会解决这个问题。)

我的代码很简单:

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

在运行之间,它们的变化量大致相同,但它们之间存在一个我没有预料到的大的恒定偏移。

我错过了什么?

最佳答案

仔细观察这些数字,这是有符号/无符号的不匹配。

3978299058 = 0xED2006B2

-316668238(二进制补码)= 0xED2006B2

3978316717 = 0xED204BAD

-316650501(二进制补码)= 0xED204BFB

所以时间是一致的,只是 win32.GetTickCount 将滴答计数解释为有符号 32 位整数,而 win32.GetLastInputInfo 将其解释为无符号.

(具体来说,GetLastInputInfo 使用 PyLong_FromUnsignedLong,而 GetTickCountDWORD 转换为 long,然后调用 Py_BuildValue。您可能需要考虑提交错误,因为滴答计数应该是一个无符号值。)

关于python - GetLastInputInfo 和 GetTickCount 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36312480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com