рекордное количество времени компьютер использовался? - PullRequest
1 голос
/ 07 августа 2009

Я хотел бы запрограммировать таймер, который будет считать секунды, в течение которых есть движение мыши или любое движение клавиатуры.

цель этого приложения - записать, сколько времени сотрудник использовал компьютер (не имеет значения, для какой цели или приложения он использовался)

Я хотел бы сделать это в vb.net для winforms

1 Ответ

2 голосов
/ 07 августа 2009

Я делаю это точно, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...