[英]How to find how long my computer is being idle (idle time) on C# desktop
如何查看我的計算機在C#Desktop Application上閑置多長時間(空閑時間)
空閑時間是計算機或設備啟動但未使用的總時間。 如果計算機或計算機設備閑置一段時間,它可能會進入待機模式或關機。
有沒有辦法得到它?
如果有空閑你的意思是從最后一次用戶輸入開始經過的時間(如GetIdleTime()
函數那樣)那么你必須使用GetlastInputInfo()
函數(參見MSDN ):
在C#中你必須P / Invoke它:
[DllImport("user32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
[StructLayout(LayoutKind.Sequential)]
struct LASTINPUTINFO {
public uint cbSize;
public int dwTime;
}
它將返回上次用戶輸入的系統引導所經過的毫秒數 。 首先你需要的是系統啟動時間,你可以從Environment.TickCount
(啟動時的毫秒數)獲得,然后:
DateTime bootTime = DateTime.UtcNow.AddMilliseconds(-Environment.TickCount);
現在你可以有最后一次輸入的時間:
LASTINPUTINFO lii = new LASTINPUTINFO();
lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO));
GetLastInputInfo(ref lii);
DateTime lastInputTime = bootTime.AddMilliseconds(lii.dwTime);
經過的時間將只是:
TimeSpan idleTime = DateTime.UtcNow.Subtract(lastInputTime);
根據您的UI框架(您未指定),您需要捕獲WM_ENTERIDLE
消息並存儲接收消息的時間。
你應該怎么抓住這條消息? 這些家伙會告訴你要在winforms中做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.