我有一个vb.net winform,我想知道如何添加类似会话时间的东西。例如,我有一个varialbe设置为10分钟,在10分钟内,如果没有活动(没有鼠标/没有键盘交互),我想将用户注销。关于如何使这项工作,任何人都能对这个主题有所启发吗?
答案 0 :(得分:2)
第一个问题,你为什么要做一个winform。我们通常在网络表单中使用的这些东西。但即使你想在WinForms中使用这些东西,你也需要使用Timer Class
。
无论何时遇到活动,您都可以通过调用Stop
然后立即呼叫Start
来重置计时器。在Timer's Tick
事件中放置您想要的任何代码(假设这是System.Windows.Forms.Timer
),您将全部设置好。
答案 1 :(得分:0)
如果您正在寻找一种方法来检测您的应用程序之外的输入,Amit的建议将无效。
如果是这种情况,请参见Detecting idle users in Winforms。调用GetLastInputInfo()
并检查最后一个输入值应该会给你一些东西。
如果您不担心用户离开您的应用程序,并在不使用它后退出,请使用Amit在输入事件上重置计时器的方法。
答案 2 :(得分:0)
我建议你使用活动Application.Idle
。
无需P / Invoke。
Public Class Form1
Private WithEvents _timer As Timer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 10 seconds for testing
Me._timer = New Timer With {.Interval = 10000, .Enabled = True}
AddHandler Application.Idle, AddressOf Me.Application_Idle
End Sub
Private Sub Application_Idle(sender As Object, e As EventArgs)
Me._timer.Stop()
Me._timer.Start()
End Sub
Private Sub Timer_Tick(sender As Object, e As EventArgs) Handles _timer.Tick
Me._timer.Stop()
RemoveHandler Application.Idle, AddressOf Me.Application_Idle
' Do something to log the user out
Me.Close()
End Sub
End Class