如何获取进程运行的时间长度2011-02-04 VCKBASE DavidCrow本文简要介绍了如何使用 GetProcessTimes API 函数来获取某个进程运行了多长时间。GetProcessTimes 函数返回的时间值很容易转换成可读和可利用的信息。参考如下代码段:
HANDLE hProcess;
FILETIME ftCreation,
ftExit,
ftKernel,
ftUser;
GetProcessTimes(hProcess, &ftCreation, &ftExit, &ftKernel, &ftUser);
本文例子程序的运行界面如下图所示:

计算运行的时间某个进程运行的时间长度是指该进程创建的时间到当前时间逝去的时间。这个信息被存储在 FILETIME 结构中。只要计算出逝去的时间,那么再将它转换成小时/分钟/秒形式。很幸运,借助 COleDateTime 类,这个工作很容易完成。
COleDateTime timeNow = COleDateTime::GetCurrentTime(),
timeCreation = ftCreation;
COleDateTimeSpan timeDiff = timeNow - timeCreation;
在此你可以使用 COleDateTimeSpan 中不同的方法来获得逝去的小时/分钟等信息。计算内核和用户时间参考相关文档,内核和用户时间就是实际逝去的时间。这个值在 FILETIME 结构中被表示为 100 纳秒单位。将它转换成可用的信息有两种方法:方法一:我们可以用一些基本方法将它转换成以秒为单位的值,一纳秒相当于千万分之一秒,因为这个时间已经用 100 纳秒单位表示,所以用10个百万来除一下即可:
__int64 i64Kernel = *((__int64 *) &ftKernel);
DWORD dwKernel = (DWORD) (i64Kernel / 10000000U);