Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定应用程序是否有任何活动?VB.NET_Vb.net - Fatal编程技术网

确定应用程序是否有任何活动?VB.NET

确定应用程序是否有任何活动?VB.NET,vb.net,Vb.net,有人知道在VB.net windows窗体应用程序中检测最近活动的方法吗 我们有一个零售商店,用户共享地面电脑,应用程序将在每台机器上,使用前需要登录。我正在试图找到一种方法,如果应用程序闲置了10分钟,就自动关闭它 我想我可以对当前的windows登录会话做一些类似的事情——设置一个gp,让用户在10分钟不活动后注销——但是如果在vb.net中有一种简单、不占用内存的方法,我宁愿使用这种方法 谢谢您可以尝试使用应用程序。空闲事件;像这样: Private Sub Application_Idl

有人知道在VB.net windows窗体应用程序中检测最近活动的方法吗

我们有一个零售商店,用户共享地面电脑,应用程序将在每台机器上,使用前需要登录。我正在试图找到一种方法,如果应用程序闲置了10分钟,就自动关闭它

我想我可以对当前的windows登录会话做一些类似的事情——设置一个gp,让用户在10分钟不活动后注销——但是如果在vb.net中有一种简单、不占用内存的方法,我宁愿使用这种方法


谢谢

您可以尝试使用应用程序。空闲事件;像这样:

Private Sub Application_Idle(ByVal sender As Object, ByVal e As EventArgs) 

    MessageBox.Show("You are in the Application.Idle event.")

End Sub 

我个人推荐Windows实现,因为这样您就不必担心可能发生的所有各种情况:

你是关闭应用程序还是让它保持打开状态

如果用户在屏幕上显示提示(消息框),该怎么办

如果你关闭应用程序,你如何处理正在进行的工作

如果你不关闭应用程序,你如何通知用户,然后,如果其他用户想要登录,你如何优雅地回滚前一个用户的信息

如果其他用户想要登录,您如何防止他们看到前一个用户可能在屏幕上留下的任何敏感信息


但是,如果您确实希望继续执行此操作,那么最好的办法是通过IMessageFilter连接到标准windows消息管道。这是一篇关于如何使用的不错的文章。

您可以定期检查光标的坐标,看看自上次检查以来它们是否发生了变化。在没有任何更改的情况下进行一定数量的检查之后,应用程序将关闭。可能不是最好的方法,但它肯定是一个选项。

当应用程序启动时,为
应用程序.Idle
事件创建一个处理程序。同时创建一个10分钟计时器对象。每次事件队列为空时,都会引发
Appliation.Idle
事件。如果移动鼠标,将引发一个事件。如果按某个键,则会引发一个事件。请注意,不能将
Handles
关键字与
Application.Idle
一起使用<代码>句柄仅适用于本地贴花对象,而不适用于静态对象

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分钟,它将在
10分钟后引发
Application.Idle
。如果您预期会发生这种情况,请确保在执行长时间运行的代码之前禁用十分钟计时器,然后再次启用它