Private Declare Function GetLastInputInfo Lib "user32" (ByVal pLastInput As IntPtr) As Long
<StructLayout(LayoutKind.Sequential)> _
Private Structure LASTINPUTINFO
Public cbSize As Int32
Public dwTime As Int32
End Structure
Public Sub GetLastInputTimeSpan()
Dim sLastInput As New LASTINPUTINFO
sLastInput.cbSize = Marshal.SizeOf(sLastInput)
Dim thObject As GCHandle = GCHandle.Alloc(sLastInput, GCHandleType.Pinned)
Dim pLastInput As IntPtr = thObject.AddrOfPinnedObject() '取得指向结构的指针
Dim info As Long = GetLastInputInfo(pLastInput)
Dim timespan As Long = My.Computer.Clock.TickCount - thObject.Target.dwTime
If info <> 0 Then Console.WriteLine("time span: " & timespan & "ms")
If thObject.IsAllocated Then thObject.Free()
End Sub