以编程方式计算Windows上进程的开始时间

Ami*_*ani 3 c++ windows time process

我正在使用Visual Studio在Windows上编写c/c ++代码.我想知道如何有效地计算我的过程的开始时间.我可以使用gettimeofday()吗?我从谷歌找到了以下代码,但我不明白它在做什么:

int gettimeofday(struct timeval *tv, struct timezone *tz)
{
  FILETIME ft;
  unsigned __int64 tmpres = 0;
  static int tzflag;

  if (NULL != tv)
  {
    GetSystemTimeAsFileTime(&ft);

    //I'm lost at this point
    tmpres |= ft.dwHighDateTime;
    tmpres <<= 32;
    tmpres |= ft.dwLowDateTime;

    /*converting file time to unix epoch*/
    tmpres /= 10;  /*convert into microseconds*/
    tmpres -= DELTA_EPOCH_IN_MICROSECS; 
    tv->tv_sec = (long)(tmpres / 1000000UL);
    tv->tv_usec = (long)(tmpres % 1000000UL);
  }

  if (NULL != tz)
  {
    if (!tzflag)
    {
      _tzset();
      tzflag++;
    }
    tz->tz_minuteswest = _timezone / 60;
    tz->tz_dsttime = _daylight;
  }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Cur*_*ols 7

如果我理解你,你想知道你的过程开始的时间,对吗?所以你要调查一下GetProcessTimes

如果您感兴趣的进程是当前进程,则可以使用GetCurrentProcess()获取需要调用的进程句柄GetProcessTimes()返回一个您不需要关闭的伪句柄.