C#

[C#]유휴시간 체크 예제

선영아 사랑해 2017. 1. 20. 12:29

using System.Runtime.InteropServices;


[DllImport("User32.dll")]
public static extern bool LockWorkStation();

[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

[DllImport("Kernel32.dll")]
private static extern uint GetLastError();

private struct LASTINPUTINFO
{
    public uint cbSize;

    public uint dwTime;
}

private void Form1_Load(object sender, EventArgs e)
{
    timer1.Enabled = true;
}

public static uint GetIdleTime()
{
    LASTINPUTINFO lastInPut = new LASTINPUTINFO();

    lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastInPut);
   
    GetLastInputInfo(ref lastInPut);

    return ((uint)Environment.TickCount - lastInPut.dwTime);
}

public static long GetTickCount()
{
    return Environment.TickCount;
}

public static long GetLastInputTime()
{
    LASTINPUTINFO lastInPut = new LASTINPUTINFO();

    lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastInPut);

    if (!GetLastInputInfo(ref lastInPut))
    {
        throw new Exception(GetLastError().ToString());
    }

    return lastInPut.dwTime;
}

private void timer1_Tick(object sender, EventArgs e)
{
    if (GetIdleTime() > 60000)
    {
        timer1.Enabled = false;

        MessageBox.Show("test");

        timer1.Enabled = true;
    }
}


예제는 1분동안 아무 작업이 없을 경우 메시지 박스 출력하는 예제소스입니다.