首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows 10上的GetTickCount值

Windows 10上的GetTickCount值
EN

Stack Overflow用户
提问于 2016-02-10 14:57:47
回答 4查看 5.5K关注 0票数 4

我试图使用Windows中的GetTickCount()来获得系统正常运行时间。我想知道这个系统运行了多久。

然而,GetTickCount的回报却是惊人的高。这个代码给了我500多个小时的正常运行时间。

这也适用于GetTickCount64()。

为什么这个值这么高?

代码语言:javascript
运行
复制
DWORD time_ms = GetTickCount();
DWORD seconds = (time_ms / 1000) % 60;
DWORD minutes = time_ms /(1000*60) % 60;
DWORD hours = time_ms / (1000*60*60);
stringstream ss;
ss << "Hours: ";
ss << hours;
ss << " Minutes: ";
ss << minutes;
ss << " seconds: ";
ss << seconds;
MessageBoxA(0, ss.str().c_str(), "Uptime", 0);

当我运行程序时,我可以看到它正在正确地进行,但我无法理解我将如何获得我的桌面的总正常运行时间。

谢谢

编辑:我检查了CMD中的"systeminfo“的正常运行时间,发现”系统启动时间“实际上是500小时前的。所以我关掉了电脑,拔掉了电源,启动了,但是系统的启动时间还是有这么高的价值。然而,重新启动计算机使其重置,现在我的代码工作。

编辑2:这个博客https://blogs.msdn.microsoft.com/oldnewthing/20141113-00/?p=43623说GetTickCount应该用来测量时间间隔而不是我想要达到的目标。看来我得看一下注册表了。

编辑3:

在注册表中找到正确的计数器后,它具有具有GetTickCount和类似函数的相同值。在Windows中关机似乎会使它进入某种休眠状态。我没有找到任何解决办法。

EN

回答 4

Stack Overflow用户

发布于 2016-02-10 15:07:18

GetTickCount的文档描述了使系统正常运行的正确方法:

若要获取自计算机启动以来所用的时间,请在注册表项HKEY_PERFORMANCE_DATA中的性能数据中检索系统启动时间计数器。返回的值为8字节值.有关更多信息,请参阅性能计数器

票数 5
EN

Stack Overflow用户

发布于 2016-08-22 15:40:13

我只是遇到了同样的问题。我解决它的方法是:

  • 使用重新启动命令而不是关闭计算机:这将执行计算机的真正重新启动,而不是像启用“快速启动”时的“关闭”命令那样的“半休眠”。
  • 禁用“快速启动”选项。此快速启动选项将导致启动时未重新启动的GetTickCount !!

我想很多老程序都会再次使用W10和快速启动选项.

票数 3
EN

Stack Overflow用户

发布于 2016-02-10 15:05:28

500小时的正常运行时间并不特别令人惊讶。大约20天。现代系统很少关机。通常情况下,它们被暂停,而不是关闭。我想你的系统已经运行了500个小时了。

当然,您应该使用GetTickCount64来处理64位滴答计数。这将避免由GetTickCount返回的32位值造成的49天环绕。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35318521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档