监控 vb.net 中的用户 activity
Monitor user activity in vb.net
我想制作一个监控用户的程序activity。我不需要知道用户在做什么,我只需要知道他在做什么。移动鼠标,或打字。该程序将用于向公司显示谁在办公桌前以及谁离开工作站。所以如果2分钟没有activity,就说明用户离开了电脑
我正在考虑使用键盘挂钩和鼠标位置来监视每隔 5 秒的变化。每次更改时,我都会重置计数器。
有没有更好的方法? (例如阅读屏保倒计时之类的)
您可以P/Invoke WinAPI 的GetLastInputInfo()
函数来获取接收到最后一个输入的毫秒数自计算机启动以来.
用上面的内容减去 Environment.TickCount
将得到自上次收到输入后失效 的毫秒数:
<DllImport("user32.dll")> _
Public Shared Function GetLastInputInfo(ByRef plii As LASTINPUTINFO) As Boolean
End Function
<StructLayout(LayoutKind.Sequential)> _
Public Structure LASTINPUTINFO
<MarshalAs(UnmanagedType.U4)> _
Public cbSize As Integer
<MarshalAs(UnmanagedType.U4)> _
Public dwTime As Integer
End Structure
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
Dim LastInput As New LASTINPUTINFO With {.cbSize = Marshal.SizeOf(GetType(LASTINPUTINFO))} 'The "cbSize" field must be set every time we call the function.
If GetLastInputInfo(LastInput) = True AndAlso _
(Environment.TickCount - LastInput.dwTime) >= 120000 Then '120000 ms = 120 s = 2 min.
Timer1.Stop()
'Computer has been idle for 2 minutes. Do your stuff here.
End If
End Sub
这将检查鼠标和键盘输入。
Timer的Interval
属性设置为5000
使其每5秒检查一次,Enabled
属性设置为True
.
记住如果你想让它再次检查,你必须在两分钟的空闲时间过去后重新启动计时器.
我想制作一个监控用户的程序activity。我不需要知道用户在做什么,我只需要知道他在做什么。移动鼠标,或打字。该程序将用于向公司显示谁在办公桌前以及谁离开工作站。所以如果2分钟没有activity,就说明用户离开了电脑
我正在考虑使用键盘挂钩和鼠标位置来监视每隔 5 秒的变化。每次更改时,我都会重置计数器。
有没有更好的方法? (例如阅读屏保倒计时之类的)
您可以P/Invoke WinAPI 的GetLastInputInfo()
函数来获取接收到最后一个输入的毫秒数自计算机启动以来.
用上面的内容减去 Environment.TickCount
将得到自上次收到输入后失效 的毫秒数:
<DllImport("user32.dll")> _
Public Shared Function GetLastInputInfo(ByRef plii As LASTINPUTINFO) As Boolean
End Function
<StructLayout(LayoutKind.Sequential)> _
Public Structure LASTINPUTINFO
<MarshalAs(UnmanagedType.U4)> _
Public cbSize As Integer
<MarshalAs(UnmanagedType.U4)> _
Public dwTime As Integer
End Structure
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
Dim LastInput As New LASTINPUTINFO With {.cbSize = Marshal.SizeOf(GetType(LASTINPUTINFO))} 'The "cbSize" field must be set every time we call the function.
If GetLastInputInfo(LastInput) = True AndAlso _
(Environment.TickCount - LastInput.dwTime) >= 120000 Then '120000 ms = 120 s = 2 min.
Timer1.Stop()
'Computer has been idle for 2 minutes. Do your stuff here.
End If
End Sub
这将检查鼠标和键盘输入。
Timer的Interval
属性设置为5000
使其每5秒检查一次,Enabled
属性设置为True
.
记住如果你想让它再次检查,你必须在两分钟的空闲时间过去后重新启动计时器.