使用VBA在Windows 7 64位中获得空闲时间

时间:2014-08-12 06:22:33

标签: vba

简单(我希望)问题:有没有办法用VBA查询Windows 7 64位PC的空闲时间?即自上次移动鼠标或按下某个键以来的时间

背景信息:我有一个Rockwell FactoryTalk View SE应用程序,它是工厂生产线的图形控制屏幕。客户希望在5分钟后注销任何已登录的用户。在软件中有一个设置,所以这很容易,麻烦的是,当你注销时,它基本上会关闭应用程序,直到其他人登录。这意味着没有人能看到任何东西。所以我想要做的是,在一段时间不活动之后,使用仅查看权限登录默认用户。登录和退出的命令很简单,只需要在何时进行。

1 个答案:

答案 0 :(得分:1)

在一个模块中:

Private Type LASTINPUTINFO
   cbSize As Long
   dwTime As Long
End Type

Private Declare Function GetLastInputInfo Lib "user32" (lii As LASTINPUTINFO) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long

Public Sub checkIdle()
    Dim idleSecs As Long: idleSecs = GetIdleSecs()

    Debug.Print "Idle for"; idleSecs

    'schedule next check
    Application.OnTime Now + TimeValue("00:00:05"), "checkIdle", False
End Sub

Private Function GetIdleSecs()
    Dim lastInput As LASTINPUTINFO
    With lastInput
        .cbSize = Len(lastInput)
        Call GetLastInputInfo(lastInput)
        GetIdleSecs = (GetTickCount() - .dwTime) / 1000
    End With
End Function

致电checkIdle开始监控空闲时间,通过检查idleSecs的重新设置来添加条件。