110,571
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Runtime.InteropServices;
using System.Threading;
namespace Test
{
public 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();
}
}
}
public partial class BaseForm : Form
{
private Timer timer;
int x, y;
DateTime start;
bool ff = true;
public BaseForm()
{
timer = new Timer();
x = Control.MousePosition.X;
y = Control.MousePosition.Y;
timer.Interval = 1000;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
protected void timer_Tick(object sender, EventArgs e)
{
int x1 = Control.MousePosition.X;
int y1 = Control.MousePosition.Y;
if ((x == x1) && (y == y1) && ff)
{
start = DateTime.Now;
ff = false;
}
if (x != x1 || y != y1)
{
x = x1;
y = y1;
start = DateTime.Now;
ff = true;
}
TimeSpan ts = DateTime.Now.Subtract(start);
if (ts.Seconds > 5) Environment.Exit(0); //把5改成30,就是30秒
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
start = DateTime.Now;
return base.ProcessCmdKey(ref msg, keyData);
}
}
using System;
using System.Runtime.InteropServices;
using System.Threading;
namespace Test
{
public 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);
}
static void Main(string[] args)
{
ThreadPool.QueueUserWorkItem( (o) =>
{
while (true)
{
Console.WriteLine(String.Format("键盘鼠标停止{0}秒", GetLastInputTime()));
Thread.Sleep(1000);
}
});
Console.Read();
}
}
}
using System;
using System.Runtime.InteropServices;
using System.Threading;
namespace Test
{
public 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);
}
static void Main(string[] args)
{
ThreadPool.QueueUserWorkItem( (o) =>
{
while (true)
{
Console.WriteLine(String.Format("键盘鼠标停止{0}秒", GetLastInputTime()));
Thread.Sleep(1000);
}
});
Console.Read();
}
}
}