【发布时间】:2009-08-07 07:09:02
【问题描述】:
我想编写一个计时器来计算鼠标移动或任何键盘移动的秒数。
此应用程序的重点是记录员工使用计算机的时间(无论它用于什么目的或应用程序)
我想在 vb.net 中为 winforms 执行此操作
【问题讨论】:
-
那么思考时间呢?
-
员工不这么认为。来吧,你不知道吗
我想编写一个计时器来计算鼠标移动或任何键盘移动的秒数。
此应用程序的重点是记录员工使用计算机的时间(无论它用于什么目的或应用程序)
我想在 vb.net 中为 winforms 执行此操作
【问题讨论】:
我正是使用 P/Invoke 与 GetLastInputInfo API 对话来执行此操作的。
编辑:这是一个完整的 VB.Net 程序,用于显示自上次输入事件以来的系统范围内的毫秒数。它在获取信息之前会休眠一秒钟,因此它报告大约一千毫秒的时间,假设您使用鼠标或键盘来运行它。 :-)
Imports System.Runtime.InteropServices
Module Module1
<StructLayout(LayoutKind.Sequential)> _
Public Structure LASTINPUTINFO
Public Shared ReadOnly SizeOf As Integer = Marshal.SizeOf(GetType(LASTINPUTINFO))
<MarshalAs(UnmanagedType.U4)> _
Public cbSize As Integer
<MarshalAs(UnmanagedType.U4)> _
Public dwTime As Integer
End Structure
<DllImport("user32.dll")> _
Public Function GetLastInputInfo(ByRef plii As LASTINPUTINFO) As Boolean
End Function
Sub Main()
Dim lii As New LASTINPUTINFO()
lii.cbSize = LASTINPUTINFO.SizeOf
lii.dwTime = 0
System.Threading.Thread.Sleep(1000)
GetLastInputInfo(lii)
MsgBox((Environment.TickCount - lii.dwTime).ToString)
End Sub
End Module
【讨论】: