Para usarla en .Net es necesario importarla desde la dll nativa user32.dll:
[StructLayout(LayoutKind.Sequential)]
private struct LASTINPUTINFO {
public static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO));
[MarshalAs(UnmanagedType.U4)]
public UInt32 cbSize;
[MarshalAs(UnmanagedType.U4)]
public UInt32 dwTime;
}
[DllImport("user32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
La función importada puede ser usada para obtener por ejemplo el total de minutos que ha estado inactiva la sesión, solo funciona para sesión en que fue llamada la función:
private double GetLastInputTime() {
uint idleTime = 0;
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
lastInputInfo.cbSize = (uint)Marshal.SizeOf(lastInputInfo);
lastInputInfo.dwTime = 0;
uint envTicks = (uint)Environment.TickCount;
if(GetLastInputInfo(ref lastInputInfo)) {
uint lastInputTick = lastInputInfo.dwTime;
idleTime = envTicks - lastInputTick;
}
TimeSpan span = new TimeSpan(0, 0, 0, 0, (int)idleTime);
return span.TotalMinutes;
}
Hasta la próxima!
No hay comentarios:
Publicar un comentario