アイドル時間が 5 秒を超えた場合にコンピューターをロックするコンソール アプリケーション用の次のコードがあります。
問題: 5 秒経っても何も起こらない
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 static Timer timer;
private static uint idle = 0;
static void Main(string[] args)
{
timer = new Timer();
timer.Enabled = true;
timer.Interval = 1000;
timer.Start();
idle += GetIdleTime();
System.Threading.Thread.Sleep(6000);
if (idle > 5000)
{
LockWorkStation();
}
}