我與桌面應用程序的工作,我想鎖定應用程序,如果它是從一個特定的時間閒置,如果發生任何事件,則應重置到期時間。當應用程序被鎖定時,如果用戶想在應用程序中再次登錄,則必須再次輸入用戶名和密碼。
現在我正在使用計時器控制來處理此功能,但我不知道寫入用於重置到期時間的代碼的正確位置。
普萊斯告訴我怎樣能做到這一點的工作...
我與桌面應用程序的工作,我想鎖定應用程序,如果它是從一個特定的時間閒置,如果發生任何事件,則應重置到期時間。當應用程序被鎖定時,如果用戶想在應用程序中再次登錄,則必須再次輸入用戶名和密碼。
現在我正在使用計時器控制來處理此功能,但我不知道寫入用於重置到期時間的代碼的正確位置。
普萊斯告訴我怎樣能做到這一點的工作...
你可以有一個定時器控制,當觸發隱藏所有的表格,併產生一個登錄框。
這應該指出你在正確的方向 - 我不會給你的代碼。
我將如何重置到期時間。在我的表單中有多個控件,我是否需要在每個控件的點擊事件中重置到期時間。 –
我修改了我的答案,因爲隱藏表單可能會更有意義,只要輸入正確的密碼,您可以再次顯示它們。 –
這是一個很好的例子。 Detecting Application Idleness
您也可以使用Application.Idle Event,但您必須實現自己的鎖定邏輯。事實上,你甚至可以使用它來重置/啓動你的理想計時器。
編輯1
編輯2
此函數檢索自上次用戶輸入以秒的時間。但是,這不是專門針對您的應用程序,而是針對Windows。查看here瞭解更多詳情。而here是一個類似的線程。
static int GetLastInputTime()
{
int idleTime = 0;
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo);
lastInputInfo.dwTime = 0;
int envTicks = Environment.TickCount;
if (GetLastInputInfo(ref lastInputInfo))
{
int lastInputTick = lastInputInfo.dwTime;
idleTime = envTicks - lastInputTick;
}
return ((idleTime > 0) ? (idleTime/1000) : 0);
}
恕我直言,這是不夠的Windows有一個屏幕保護程序,並在必要時可以鎖定計算機。爲什麼你想添加一個額外的圖層來做同樣的事情? – jgauffin
@jgauffin:在美國,這種要求通常存在於政府法規遵從性方面。 – Gabe