Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
使用VBA在Windows 7 64位中获取空闲时间_Vba - Fatal编程技术网

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

使用VBA在Windows 7 64位中获取空闲时间,vba,Vba,简单(我希望如此)的问题:有没有办法查询带VBA的Windows7 64位PC的空闲时间?i、 例如,自上次有人移动鼠标或按键以来的时间 上下文:我有一个Rockwell FactoryTalk View SE应用程序,它是工厂生产线的图形控制屏幕。客户希望任何已登录的用户在5分钟后注销。软件中有这样的设置,所以很简单,问题是当你注销时,它基本上会关闭应用程序,直到其他人登录。这意味着没有人能看到任何东西。因此,我想做的是,在一段时间的不活动之后,以仅查看权限登录默认用户。登录和注销命令非常简单

简单(我希望如此)的问题:有没有办法查询带VBA的Windows7 64位PC的空闲时间?i、 例如,自上次有人移动鼠标或按键以来的时间

上下文:我有一个Rockwell FactoryTalk View SE应用程序,它是工厂生产线的图形控制屏幕。客户希望任何已登录的用户在5分钟后注销。软件中有这样的设置,所以很简单,问题是当你注销时,它基本上会关闭应用程序,直到其他人登录。这意味着没有人能看到任何东西。因此,我想做的是,在一段时间的不活动之后,以仅查看权限登录默认用户。登录和注销命令非常简单,只需确定何时登录即可。

在模块中:

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
的resit添加您的条件,谢谢您的回复。就我的理解而言,cbSize和dwTime对象是什么?我不能在这个应用程序中使用OnTime命令,但我想我有另一种方法来解决这个问题。另外,这是否考虑了勾号计数“包装”?我在其他地方读到过,这个值每隔45天或其他时间包装一次。如果发生这种情况,会对该代码产生什么影响?GetLastInputInfo()使用滴答计数本身与GetTickCount()保持并行。此处记录了LASTINPUTINFO