【问题标题】:record amount of time computer has been in use?记录计算机已使用的时间量?
【发布时间】:2009-08-07 07:09:02
【问题描述】:

我想编写一个计时器来计算鼠标移动或任何键盘移动的秒数。

此应用程序的重点是记录员工使用计算机的时间(无论它用于什么目的或应用程序)

我想在 vb.net 中为 winforms 执行此操作

【问题讨论】:

  • 那么思考时间呢?
  • 员工不这么认为。来吧,你不知道吗

标签: vb.net winforms


【解决方案1】:

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

【讨论】:

  • 这太棒了,但我不知道如何在 vb.net 中做
  • 非常感谢,不幸的是,当我运行 MAIN 时,我在 msgbox 中返回 0
  • @avrohom:好的,我已将其更新为休眠一秒钟,然后再获取信息。如果您在那一秒内触摸鼠标或键盘,它现在应该报告大约一千毫秒或更短的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
相关资源
最近更新 更多