[B]double[/B] GetCPULoad()
{
[B]static[/B] DWORD dwLastProcessTime = 0;
[B]static[/B] DWORD dwLastSystemTime = 0;
[B]static double[/B] dCPULoad = 0;
FILETIME ftCreationTime, ftExitTime, ftKernelTime, ftUserTime;
GetProcessTimes(GetCurrentProcess(),&ftCreationTime,&ftExitTime,&ftKernelTime,&ftUserTime);
ULARGE_INTEGER uiKernelTime, uiUserTime;
uiKernelTime.HighPart = ftKernelTime.dwHighDateTime;
uiKernelTime.LowPart = ftKernelTime.dwLowDateTime;
uiUserTime.HighPart = ftUserTime.dwHighDateTime;
uiUserTime.LowPart = ftUserTime.dwLowDateTime;
DWORD dwActualProcessTime = (DWORD)((uiKernelTime.QuadPart + uiUserTime.QuadPart)/100);
DWORD dwActualSystemTime = GetTickCount();
[B]if[/B](dwLastSystemTime) {
dCPULoad = ([B]double[/B])(dwActualProcessTime-dwLastProcessTime)/(dwActualSystemTime-dwLastSystemTime);
}
dwLastProcessTime = dwActualProcessTime;
dwLastSystemTime = dwActualSystemTime;
[B]return[/B] dCPULoad;
}