WPFでマウス、キーボードが入力されていない場合のロックを実現

1530 ワード

    public static class HxTimer

    {

        static System.Windows.Threading.DispatcherTimer _LockSreenTimer = new System.Windows.Threading.DispatcherTimer();



        public static System.Windows.Threading.DispatcherTimer LockSreenTimer

        {

            get { return _LockSreenTimer; }

            set { _LockSreenTimer = value; }

        }



        /// <summary>

        ///  

        /// </summary>

        public static int IdleMinute;

    }



    public class GetLastInputInfoHelp

    {

        [DllImport("user32.dll")]

        internal static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);



        /// <summary>

        ///  

        /// </summary>

        /// <returns> </returns>

        public static int GetLastInputTime()

        {

            LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();

            lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo);

            lastInputInfo.dwTime = 0;



            int idleTime = 0;

            if (GetLastInputInfo(ref lastInputInfo))

            {

                idleTime = Environment.TickCount - lastInputInfo.dwTime;

            }



            return ((idleTime > 0) ? (idleTime / 1000) : 0);

        }



    }



    [StructLayout(LayoutKind.Sequential)]

    internal struct LASTINPUTINFO

    {

        [MarshalAs(UnmanagedType.U4)]

        public int cbSize;

        [MarshalAs(UnmanagedType.U4)]

        public int dwTime;

    }