微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb6 – 无论我的表单上有什么控件是目标,我如何捕获键的起伏?

我想捕获ctrl / alt / etc键的起伏,无论我的表单上的哪个控件获取keyup或keydown事件.由于我的表单上有大约100个控件,如果我要为每个单独的控件添加代码,那将会非常难看.如何在不必这样做的情况下实现这一目标?

PS:SetWindowsHook和SetwindowsHookEx有什么区别?

解决方法

您需要将每个Form的KeyPreview属性设置为True.随后,您可以在表单级别捕获键盘事件,以及单个控件级别:

Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)
    Debug.Print "Form_KeyDown"
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
    Debug.Print "Form_KeyPress"
End Sub

Private Sub Form_KeyUp(KeyCode As Integer,Shift As Integer)
    Debug.Print "Form_KeyUp"
End Sub

本质上,表单在控件之前获得每个键盘事件的“预览”,例如,

Form_KeyDown
Control_KeyDown
Form_KeyUp
Control_KeyUp

至于SetwindowsHook& SetwindowsHookEx,前者是原始的Win16 API调用,后者是Win32和Win64 API调用.据我所知,不推荐使用SetwindowsHook,它不在当前的MSDN库中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐