VB .NET有没有办法检查以确保键盘和鼠标 不 正在使用? 我知道有一种方法可以测试何时按下某个键或移动了光标但是我想检查它们何时没有被使用。
有什么想法吗?
答案 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