有人知道如何检测VB.net Windows窗体应用程序的最近活动吗?我们有一家零售店,用户共享地面电脑,每台机器上都会有该应用程序,并在使用前需要登录。我正在尝试找到一种方法,如果应用程序已经闲置了10分钟左右,就自动关闭它。我想我可以通过当前的Windows登录会话做类似的事情-设置一个gp,在不活动10分钟后注销用户,但如果有一种易于操作、非记忆密集型的vb.net方法来完成,我宁愿使用那种方法。谢谢!
Application.Idle
事件。还要创建一个对象作为您的10分钟定时器。每当事件队列为空时,都会触发 Appliation.Idle
事件。如果您移动鼠标,则会引发事件。如果您按下键,则会引发事件。请注意,您不能使用 Handles
关键字处理 Application.Idle
。 Handles
仅适用于本地声明的对象,而不适用于静态对象。Public Sub MainForm_Load(sender As Object, e As EventArgs) Handles MainForm.Load
AddHandler System.Windows.Forms.Application.Idle, AddressOf Application_Idle
' TODO: Create the 10-minute timer.
End Sub
Private Sub Application_Idle(sender As Object, e As EventArgs)
' TODO: Restart the 10-minute timer.
End Sub
' This assumes your TenMinuteTimer object has an Expire event. Do what works for you instead.
Private Sub TenMinuteTimer_Expire(sender As Object, e As EventArgs) Handles TenMinuteTimer.Expire
' TODO: Close the application safely.
End Sub
唯一的问题是,如果用户开始执行一个超过10分钟的操作,它将在TenMinuteTimer.Expire
之后引发Application.Idle
。 如果您预计可能会发生这种情况,请确保在执行长时间运行的代码之前禁用TenMinuteTimer,并在之后再次启用它。
Private Sub Application_Idle(ByVal sender As Object, ByVal e As EventArgs)
MessageBox.Show("You are in the Application.Idle event.")
End Sub