精易论坛

标题: 系统_取空闲时间长时间开机会出错,修改如下可以 [打印本页]

作者: 花诗雨露    时间: 2023-10-18 09:58
标题: 系统_取空闲时间长时间开机会出错,修改如下可以
原版:返回 (GetTickCount () - dwTime.dwTime)
修改成返回 (GetTickCount64 () - dwTime.dwTime),这样只是27天不会出错



.版本 2

.子程序 系统_取空闲时间, 整数型, 公开, 返回单位为毫秒
.局部变量 dwTime, PLASTINPUTINFO

dwTime.cbSize = 8
GetLastInputInfo (dwTime)
返回 (GetTickCount64 () - dwTime.dwTime)



作者: 禁回忆    时间: 2023-10-18 10:33
GetTickCount返回的是 uint类型,49.7天会超限一次。你说的 27 天是因为易语言的整数型是有符号的整数型。
GetTickCount64是 ulonglong超长整形,这个类型是在C++11 标准中的,易语言应该是不支持,需要支持的话就自己想办法定义。
当然你也可以用 ulong 来接受GetTickCount64的返回值, 0-18446744073709551615的取值范围够你用大概584,942,417.355年(按每年 365 天计算)。哦对易语言也没有无符号长整形。
那你就考虑用long 来接收,易语言长整数型就是 long,取值范围在-9 223 372 036 854 775 808到9 223 372 036 854 775 807,够你用9 223 372 036 854 775 807毫秒,大概292,471,208.678年。
此时你需要的只是把系统_取空闲时间的返回值改成长整数型
作者: 花诗雨露    时间: 2023-10-18 10:50
禁回忆 发表于 2023-10-18 10:33
GetTickCount返回的是 uint类型,49.7天会超限一次。你说的 27 天是因为易语言的整数型是有符号的整数型。
...

谢谢大神,学习了
作者: 禁回忆    时间: 2023-10-18 14:59
@项目部004 如果还可以更新的话,看看什么时候有空可以更新一下,要是做服务端用到的话确实有这个问题
作者: 轻描淡写zzz    时间: 2023-11-26 17:40
支持!支持支持!支持支持!




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4