检查任何和所有键盘和鼠标的使用情况

时间:2017-06-14 18:49:53

标签: vb.net

VB .NET有没有办法检查以确保键盘和鼠标 正在使用? 我知道有一种方法可以测试何时按下某个键或移动了光标但是我想检查它们何时没有被使用。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

前段时间我写了一个自助服务终端应用,我需要检测空闲时间。这是我正在使用的代码:

Imports System.Runtime.InteropServices

Public Class Application

   <StructLayout(LayoutKind.Sequential)> _
   Private Structure LASTINPUTINFO
      <MarshalAs(UnmanagedType.U4)> _
      Public cbSize As Integer
      <MarshalAs(UnmanagedType.U4)> _
      Public dwTime As Integer
   End Structure

   <DllImport("user32.dll")> _
   Private Shared Function GetLastInputInfo(ByRef plii As LASTINPUTINFO) As Boolean
   End Function

   Private idletime As Integer
   Private lastInputInf As New LASTINPUTINFO()

   Public Function GetIdleTime() As Integer
      idletime = 0
      lastInputInf.cbSize = Marshal.SizeOf(lastInputInf)
      lastInputInf.dwTime = 0

      If GetLastInputInfo(lastInputInf) Then
         idletime = Environment.TickCount - lastInputInf.dwTime
      End If

      If idletime > 0 Then
         Return CType(idletime / 1000, Integer)
      Else
         Return 0
      End If
   End Function

End Class

此代码应该允许您“确保不使用键盘和鼠标?”

您将此代码放入一个类中。根据您的应用程序的需要,您将调用GetIdleTime(),它返回应用程序空闲的秒数。此方法是Windows API调用的包装。所以在你的5分钟例子中,你会写:

  Dim a = New Application()

  ...

  If a.GetIdleTime() > 300 Then
     'do something useful
  End If