Gur*_*rra 2 c++ windows winapi windows-10
我试图在Windows API中使用GetTickCount()来获得系统正常运行时间.我想知道系统运行了多长时间.
然而,GetTickCount的回报非常高.此代码为我提供超过500小时的正常运行时间.
这适用于GetTickCount64().
为什么这个价值如此之高?
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);
Run Code Online (Sandbox Code Playgroud)
当我运行该程序时,我可以看到它正在正常进行,但无法理解我将如何获得桌面的总运行时间.
谢谢
编辑:我在CMD中用"systeminfo"检查了正常运行时间,发现"系统启动时间"实际上是大约〜500小时前.所以我关闭计算机并拔掉电源,启动但仍然,系统启动时间具有这么高的值.但是,重新启动计算机使其重置,现在我的代码工作.
编辑2: 这个博客https://blogs.msdn.microsoft.com/oldnewthing/20141113-00/?p=43623声明GetTickCount应该用于测量时间间隔,而不是我想要实现的时间间隔.好像我必须看一下注册表.
编辑3:
在注册表中找到正确的计数器后,它具有相同的值具有GetTickCount和类似的功能.似乎在Windows中关闭会使其处于某种程度的休眠状态.我没有找到任何解决方案.
该文档GetTickCount
描述了使系统正常运行的正确方法:
要获取自计算机启动以来经过的时间,请在注册表项HKEY_PERFORMANCE_DATA中的性能数据中检索"系统运行时间"计数器.返回的值是一个8字节的值.有关更多信息,请参阅性能计数器
归档时间: |
|
查看次数: |
2293 次 |
最近记录: |