Winforms 如何知道用户在winform场景中处于活动状态?
要求是,如果用户在过去60秒内没有单击winform应用程序上的任何内容,它应该执行自动注销操作。所以,除了重置每个菜单、每个按钮等上的计数器(这是一个巨大的负担)之外,还有什么更简单的方法来检测用户已处于非活动状态60秒吗?我使用此代码来计算非活动时间。它的工作真的很好,我希望它也能帮助你Winforms 如何知道用户在winform场景中处于活动状态?,winforms,logout,Winforms,Logout,要求是,如果用户在过去60秒内没有单击winform应用程序上的任何内容,它应该执行自动注销操作。所以,除了重置每个菜单、每个按钮等上的计数器(这是一个巨大的负担)之外,还有什么更简单的方法来检测用户已处于非活动状态60秒吗?我使用此代码来计算非活动时间。它的工作真的很好,我希望它也能帮助你 public struct LASTINPUTINFO { public uint cbSize; public uint dwTime; } [DllImport("User32.dll
public struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
[DllImport("User32.dll")]
private static extern Boolean GetLastInputInfo(ref LASTINPUTINFO plii);
/// <summary>
/// Get inactivity time
/// </summary>
/// <returns>Inactivity time in ms</returns>
public static int GetIdleTime()
{
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
lastInputInfo.cbSize = (UInt32) System.Runtime.InteropServices.Marshal.SizeOf(lastInputInfo);
if (GetLastInputInfo(ref lastInputInfo))
{
UInt32 lastInputTick = lastInputInfo.dwTime;
if (lastInputTick == 0)
return 0;
return (Environment.TickCount - (Int32)lastInputInfo.dwTime);
}
else
return 0;
}
//In your method :
if (GetIdleTime() >= yourTime)
{
//logout
}
public结构LASTINPUTINFO
{
公共单位cbSize;
公共时间;
}
[DllImport(“User32.dll”)]
私有静态外部布尔GetLastInputInfo(参考LASTINPUTINFO plii);
///
///获取不活动时间
///
///不活动时间(毫秒)
公共静态int GetIdleTime()
{
LASTINPUTINFO LASTINPUTINFO=新的LASTINPUTINFO();
lastInputInfo.cbSize=(UInt32)System.Runtime.InteropServices.Marshal.SizeOf(lastInputInfo);
if(GetLastInputInfo(参考lastInputInfo))
{
UInt32 LASTINPUTICK=lastInputInfo.dwTime;
如果(lastInputTick==0)
返回0;
返回(Environment.TickCount-(Int32)lastInputInfo.dwTime);
}
其他的
返回0;
}
//在您的方法中:
如果(GetIdleTime()>=yourTime)
{
//注销
}