如何在C#桌面上查找我的计算机空闲时间(空闲时间)

MD *_*AIN 5 c#

如何查看我的计算机在C#Desktop Application上闲置多长时间(空闲时间)

空闲时间是计算机或设备启动但未使用的总时间.如果计算机或计算机设备闲置一段时间,它可能会进入待机模式或关机.

有没有办法得到它?

Adr*_*tti 9

如果有空闲你的意思是从最后一次用户输入开始经过的时间(正如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;
}
Run Code Online (Sandbox Code Playgroud)

它将返回上次用户输入的系统引导所经过的毫秒数.首先你需要的是系统启动时间,你可以从Environment.TickCount(启动时的毫秒数)开始,然后:

DateTime bootTime = DateTime.UtcNow.AddMilliseconds(-Environment.TickCount);
Run Code Online (Sandbox Code Playgroud)

现在你可以有最后一次输入的时间:

LASTINPUTINFO lii = new LASTINPUTINFO();
lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO));
GetLastInputInfo(ref lii);

DateTime lastInputTime = bootTime.AddMilliseconds(lii.dwTime);
Run Code Online (Sandbox Code Playgroud)

经过的时间将只是:

TimeSpan idleTime = DateTime.UtcNow.Subtract(lastInputTime);
Run Code Online (Sandbox Code Playgroud)