Windows Mobile
Window Mobile で、アプリの画面にCPU使用率を表示しようと、こんなコードを書いてみた。
OnIdle()処理で、CPU使用率がどのくらい低下するかを見ようと思ったのだが…
「本当にアイドルしたら、画面更新できないじゃん」
画面更新できなかったら、CPU使用率表示できないっつーの。
Timerで更新するという手もあるかしらん。Timerで1000ms単位でCPU使用率だけ更新するみたいな…
WM_TIMERポストしたら、Idleループから出てきちゃうじゃん…
などなど、脳内 endless-loop を形成してみました。
あ〜ぁ。
// GetCpuUilization returns CPU utilization value from 0 to 100(%) static int GetCpuUtilization() { static DWORD dwLastTickCount = 0; static DWORD dwLastIdleAmount = 0; if (dwLastTickCount == 0) { dwLastTickCount = ::GetTickCount(); dwLastIdleAmount = ::GetIdleTime(); return 0; } DWORD dwTickCount = ::GetTickCount(); DWORD dwIdleAmount = ::GetIdleTime(); DWORD dwUtilization = 100 - (dwIdleAmount - dwLastIdleAmount) * 100 / (dwTickCount - dwLastTickCount); // save current information dwLastTickCount = dwTickCount; dwLastIdleAmount = dwIdleAmount; // Pass the result return dwUtilization; }