要件は、ユーザーが過去60秒間にwinformアプリケーションで何もクリックしなかった場合、自動ログアウトアクションを実行する必要があることです。それでは、各メニューのカウンターをリセットしたり、各ボタンなどをリセットしたりする以外に、ユーザーが60秒間非アクティブになったことを検出する簡単な方法はありますか?
このコードを使用して、非アクティブ時間を計算しています。それは本当にうまくいきます、私はそれがあなたにも役立つことを願っています。
public struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
[DllImport("User32.dll")]
private static extern Boolean GetLastInputInfo(ref LASTINPUTINFO plii);
/// <summary>
/// Get inactivity time
/// </summary>
/// <returns>Inactivity time in ms</returns>
public static int GetIdleTime()
{
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
lastInputInfo.cbSize = (UInt32) System.Runtime.InteropServices.Marshal.SizeOf(lastInputInfo);
if (GetLastInputInfo(ref lastInputInfo))
{
UInt32 lastInputTick = lastInputInfo.dwTime;
if (lastInputTick == 0)
return 0;
return (Environment.TickCount - (Int32)lastInputInfo.dwTime);
}
else
return 0;
}
//In your method :
if (GetIdleTime() >= yourTime)
{
//logout
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加