Windows が起動してからの時間を求めるためには timeGetTime() 関数を使います。
この関数は Windows が機能してからの時間をミリ秒で返します。どれくらいの精度を実現できるかはパソコンによって異なりますが、たいていの環境では1が指定できると思います(つまり、最小精度は1ミリ秒)。
timeGetTime() 関数の精度を設定するためには timeBeginPeriod() 関数と timeEndPeriod() 関数を使います。サンプルのようにふたつの関数で精度を設定したいブロックを囲むことで、その間が timeBeginPeriod() で渡した精度になります。それぞれの関数には精度を数値で設定します。精度は timeBeginPeriod(1) と決めうちで設定しても良いのですが、もし精度が設定できない環境の場合は精度の設定が無効になってしまうため、サンプルにあるように timeGetDevCaps() 関数を使って、そのパソコンで設定できる最高の精度を渡しておくと安心です。
次のコードは一連のサンプルです。
// 分解能を最小に設定する TIMECAPS caps = { 0 }; timeGetDevCaps(&caps, sizeof(TIMECAPS)); timeBeginPeriod(caps.wPeriodMin); // 実行時間を取得 DWORD uptime = timeGetTime(); // 分解能を元に戻す timeEndPeriod(caps.wPeriodMin);
なお、コンパイル時には winmm.lib をリンクする必要があります。
Contributions