VB .NET是否有任何检查方法以确保未使用键盘和鼠标?我知道有一种方法可以测试何时按下某个键或移动光标,但我想检查它们何时未被使用。
知道吗?
不久前,我编写了一个信息亭应用程序,我需要在其中检测空闲时间。 这是我正在使用的代码:
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