vb6 – 无论我的表单上有什么控件是目标,我如何捕获键的起伏?
发布时间:2020-12-17 07:24:44 所属栏目:百科 来源:网络整理
导读:我想捕获ctrl / alt / etc键的起伏,无论我的表单上的哪个控件获取keyup或keydown事件.由于我的表单上有大约100个控件,如果我要为每个单独的控件添加代码,那将会非常难看.如何在不必这样做的情况下实现这一目标? PS:SetWindowsHook和SetWindowsHookEx有什么
我想捕获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库中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |