簡體   English   中英

如何在C#桌面上查找我的計算機空閑時間(空閑時間)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM