C# WinForm 鼠标不移动,20秒后,窗口自动关闭

来源:互联网 发布:sum是什么意思c语言 编辑:程序博客网 时间:2024/05/22 09:43
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();        }    }}

0 0