在Form KeyUp事件中检测右移键

时间:2011-12-24 19:02:07

标签: events vb6 keyboard

我想检测何时在VB6中的表单上释放右移键。我有以下代码:

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    If GetKeyState(VK_RSHIFT) < 0 Then
        MsgBox "Right Shift Released"
    End If
End Sub

除此之外,它不起作用。当事件被触发时,密钥已被释放,GetKeyState API函数返回0。

解决方案是什么?

1 个答案:

答案 0 :(得分:1)

Shift参数告诉您 Shift Ctrl Alt 键的组合是什么。但是,它并没有区分左右。为此,您必须使用GetKeyState API函数。

使用与您所拥有的代码相似的代码来捕获右移键,但在Form_KeyDown事件中。设置模块级布尔值以指示该键现在已关闭。 (请注意,您必须检查KeyCode是否为16,您将获得任一Shift键。)

然后,在Form_KeyUp事件中,如果您的布尔值表示密钥已关闭,但GetKeyState返回一个负数,表示它实际已启动,则表示密钥已被释放。确保此时也重置表单级布尔值。