收录日期:2018/11/16 16:16:15 时间:2016/05/23 01:58:01 标签:控件
Windows中如何获取键盘和鼠标处于空闲状态的时间?
在一个timer控件中设一个变量比如stay,每秒加一,如果加到30就说明30秒鼠标没动过了。
用钩子函数,如果接收到鼠标或者键盘响应,就让stay=0
模块代码如下:
'以下程序是在Module1.bas内
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
'idHook参数代表拦截的类型,主要有键盘、鼠标等(当拦截键盘输入时值为2)
'lpfn参数代表Hook函数的位址
'hmod代表.dll的hInstance
'dwThreadId代表执行拦截的ThreadId
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WH_KEYBOARD = 2
Public Const WH_MOUSE = 0
Public hHook As Long
Public mHook As Long
Public Stay As Integer

Sub EnableHook() '定义EnableHook
'设置拦截
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf Myfunc, App.hInstance, 0)
mHook = SetWindowsHookEx(WH_MOUSE, AddressOf Myfunc, App.hInstance, 0)
End Sub

Sub DisableHook() '定义DisableHook
Dim ret As Long
ret = UnhookWindowsHookEx(hHook) '取消拦截
ret = UnhookWindowsHookEx(mHook)
End Sub

Function Myfunc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 'wParam代表按键
 On Error GoTo ER
Stay = 0
Myfunc = 1
Exit Function
ER: MsgBox "错误号是:" & Err.Number
End Function


窗体代码如下:
Private Sub Form_Load()
EnableHook
End Sub

Private Sub Form_Unload(Cancel As Integer)
DisableHook
End Sub

Private Sub Timer1_Timer()
Stay = Stay + 1
Label1.Caption = Stay
If Stay = 10 Then
    MsgBox "鼠标键盘已有10秒未相应"
    Stay = 0
End If
End Sub

我刚会用钩子函数,有什么不对的地方,请高手指点。

IXMLDOMNode如何作为输出参数 如何学习WIN下面的网络编程? 从何入手,API还是WINSOCK的类? bea portal 在编译程序时候报以下错误,请指点以下 钱学森最后一次谈话:中国大学缺乏创新精神 这段代码有内存泄漏,怎么改? 高手帮忙! 支付宝在lab页面中孵化新版系统? 【NBA押宝】小賭怡情,大賭致富! 如何计算算法的时间复杂度和空间复杂度? 请高手指点:cygwin中gcc 请问一下我用MarkupSTL解析时,有的内容是大结果就解出乱码来了,这个怎么办啊? SQL表中排序(菜鸟问题) 关于正则表达式的双引号问题 三分,想要的来..... ID:java___ ,兄弟你真猛!你是CSDN第一人啊!中国以后的发展靠你了!~~~~~~~~~~~~~~ 支付宝在lab页面中孵化新版系统? 超级复杂的SQL期待高人解答 shadow map绘制阴影图 求解关于VS208安装CUDA后无法新建工程问题 Senior Project Manager 哥哥我以后不找小公司工作了 请教一个指针问题 我在想,在北京香山上“停车做爱枫林晚”会不会是一件很爽的事,但是考虑到那里的人实在太多,是不是又有辱斯文... ERP的JAVA开发人才 C#如何编写像QQ那样拥有皮肤的应用程序呀啊? 求教update和select复合语句的写法 随机函数问题。 求帮忙。。 【求教】取平均值 想建个网站,大家觉得哪类型主题比较好