记录计算机一直在使用的时间?

时间:2009-08-06 21:57:11

标签: vb.net winforms

我希望有一个计时器,可以计算鼠标移动或任何键盘移动的秒数。

此应用程序的目的是记录员工使用计算机的时间(与其使用的目的或应用程序无关)

我想在vb.net中为winforms

执行此操作

1 个答案:

答案 0 :(得分:2)

我使用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