Vb.net 记录计算机使用的时间?

Vb.net 记录计算机使用的时间?,vb.net,winforms,Vb.net,Winforms,我想有一个程序的计时器,将计数期间有鼠标移动或任何键盘移动秒 此应用程序的目的是记录员工使用计算机的时间(无论其用途或应用程序如何) 我想在vb.net for winforms中实现这一点我使用p/Invoke与API对话来实现这一点 编辑:下面是一个完整的VB.Net程序,用于显示自上次输入事件以来的毫秒数,系统范围。在获取信息之前,它会休眠一秒钟,因此如果您使用鼠标或键盘运行它,它会报告大约1000毫秒的时间。:-) 导入System.Runtime.InteropServices 模块1

我想有一个程序的计时器,将计数期间有鼠标移动或任何键盘移动秒

此应用程序的目的是记录员工使用计算机的时间(无论其用途或应用程序如何)


我想在vb.net for winforms中实现这一点

我使用p/Invoke与API对话来实现这一点

编辑:下面是一个完整的VB.Net程序,用于显示自上次输入事件以来的毫秒数,系统范围。在获取信息之前,它会休眠一秒钟,因此如果您使用鼠标或键盘运行它,它会报告大约1000毫秒的时间。:-)

导入System.Runtime.InteropServices
模块1
_
公共结构LASTINPUTINFO
公共共享只读SizeOf As Integer=Marshal.SizeOf(GetType(LASTINPUTINFO))
_
公共cbSize为整数
_
作为整数的公共时间
端部结构
_
作为布尔值的公共函数GetLastInputInfo(ByRef plii作为LASTINPUTINFO)
端函数
副标题()
Dim lii作为新的LASTINPUTINFO()
lii.cbSize=LASTINPUTINFO.SizeOf
lii.dwTime=0
系统线程线程睡眠(1000)
GetLastInputInfo(lii)
MsgBox((Environment.TickCount-lii.dwTime).ToString)
端接头
端模块

这太棒了,但我不知道如何在vb.NET中执行。非常感谢您,不幸的是,当我运行MAIN时,在msgbox@avrohom:好的,在获取信息之前,我已将其更新为睡眠一秒钟。现在,如果你在那一秒中触摸鼠标或键盘,它应该报告大约1000毫秒,或者更少。那么思考时间呢?员工不会思考。得了吧,你不知道吗
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