C# - 检测用户上次与操作系统交互的时间

c++

1个回答

写回答

MajorTom

2025-07-08 11:20

+ 关注

AI
AI

C# - 检测用户上次与操作系统交互的时间

在C#编程中,有时候我们需要检测用户最后一次与操作系统进行交互的时间。这可以帮助我们判断用户是否处于活跃状态,或者根据用户的活跃程度来执行相应的操作。本文将介绍如何使用C#编程语言来实现这一功能,并提供一个简单的案例代码。

步骤一:引入相关命名空间

首先,在编写代码之前,我们需要引入System.Diagnostics和System.Runtime.InteropServices这两个命名空间。这两个命名空间提供了我们所需要的类和方法,用于检测用户的活动状态。

csharp

using System.Diagnostics;

using System.Runtime.InteropServices;

步骤二:定义检测函数

接下来,我们需要定义一个函数来检测用户的活动状态。我们可以使用GetLastInputInfo函数来获取用户最后一次的输入信息,并通过计算当前时间与最后一次输入时间的差值来判断用户的活跃状态。

csharp

public static class UserActivityDetector

{

[DllImport("user32.dll")]

private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

public static TimeSpan GetInactiveTime()

{

int systemUptime = Environment.TickCount;

int lastInputTicks = 0;

var lastInputInfo = new LASTINPUTINFO();

lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo);

lastInputInfo.dwTime = 0;

if (GetLastInputInfo(ref lastInputInfo))

{

lastInputTicks = lastInputInfo.dwTime;

}

return TimeSpan.FromMilliseconds(systemUptime - lastInputTicks);

}

}

internal struct LASTINPUTINFO

{

public int cbSize;

public uint dwTime;

}

步骤三:使用检测函数

现在,我们可以在我们的代码中使用刚刚定义的函数来检测用户的活动状态。通过调用GetInactiveTime函数,我们可以获取用户最后一次与操作系统交互的时间间隔,并根据需要执行相应的操作。

csharp

class Program

{

static void MAIn(string[] args)

{

TimeSpan inactiveTime = UserActivityDetector.GetInactiveTime();

Console.WriteLine("用户上次与操作系统交互的时间间隔为:" + inactiveTime.TotalSeconds + "秒");

// 根据需要执行相应的操作

if (inactiveTime.TotalMinutes >= 5)

{

Console.WriteLine("用户处于非活跃状态,执行相应的操作...");

}

Console.ReadLine();

}

}

通过以上的步骤,我们可以使用C#编程语言来检测用户最后一次与操作系统交互的时间。这对于判断用户活跃状态以及执行相应操作非常有帮助。希望本文能对您理解和使用C#来实现这一功能提供帮助。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号