namespace App
{
class App
{
[StructLayout(LayoutKind.Sequential)]
struct LASTINPUTINFO
{
public static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO));
[MarshalAs(UnmanagedType.U4)]
public Int32 cbSize;
[MarshalAs(UnmanagedType.U4)]
public UInt32 dwTime;
}
[DllImport("user32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
static uint GetLastInputTime()
{
uint idleTime = 0;
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo);
lastInputInfo.dwTime = 0;
uint envTicks = (uint)Environment.TickCount;
if (GetLastInputInfo(ref lastInputInfo))
{
uint lastInputTick = lastInputInfo.dwTime;
idleTime = envTicks - lastInputTick;
}
return ((idleTime > 0) ? (idleTime / 1000) : 0);
}
private static readonly Int32 X = 20;
static void Main(string[] args)
{
ThreadPool.QueueUserWorkItem((o) =>
{
UInt32 i = 0;
while (true)
{
if (i >= X)
{
return;
}
i = GetLastInputTime();
Console.WriteLine(String.Format("键盘鼠标停止{0}秒,剩余{1}秒", i, X - i));
Thread.Sleep(1000);
}
});
Console.Read();
}
}
}
C# WinForm 鼠标不移动,20秒后,窗口自动关闭
最新推荐文章于 2024-01-15 20:14:59 发布