search instagram arrow-down
Yoyo Young

近期文章

近期迴響

彙整

分類

其它

[C#]如何取得使用者操作閒置時間?

前陣子在寫電子相簿的時候,想要讓系統有自動輪播的功能,必須要在使用者閒置一定秒數的時候啟動,整理出來方法如下:

先匯入user32.dll中的GetLastInputInfo方法:

[DllImport("user32.dll", SetLastError = true)]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

另外定義一個結構如下:

struct LASTINPUTINFO
{
    public uint cbSize;
    public uint dwTime;
}

這裡的dwTime可以取得系統中最後一次操作的時間。

工具準備好就可以開始了,撰寫一個靜態方法供取用:

public static TimeSpan GetLastInput()
{
    LASTINPUTINFO plii = new LASTINPUTINFO();
    plii.cbSize = (uint)Marshal.SizeOf(plii);
 
    if (GetLastInputInfo(ref plii))     
        //會把最後一次操作的時間寫入在dwTime內  
        return TimeSpan.FromMilliseconds(Environment.TickCount - plii.dwTime);
        //得到的數字都是秒數,轉換成TimeSpan型態比較好用
    else
        throw new Win32Exception(Marshal.GetLastWin32Error());
}

如此便可以取得使用者最後一次操作到目前的時間了。

發表迴響
繼續閱讀進入