还有ctrl win shift等键盘两边都有,如何知道按下的是左边的还是右边的

解决方案 »

  1.   


    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Private Const VK_LSHIFT = &HA0
    Private Const VK_RSHIFT = &HA1
    Private Const VK_LCTRL = &HA2
    Private Const VK_RCTRL = &HA3
    Private Const VK_LMENU = &HA4
    Private Const VK_RMENU = &HA5Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = vbKeyShift And Shift = vbShiftMask And (GetAsyncKeyState(VK_LSHIFT) And &H8000) Then MsgBox "您按的是 左边 Shift 键"
        If KeyCode = vbKeyShift And Shift = vbShiftMask And (GetAsyncKeyState(VK_RSHIFT) And &H8000) Then MsgBox "您按的是 右边  Shift 键"    If KeyCode = vbKeyMenu And Shift = vbAltMask And (GetAsyncKeyState(VK_LMENU) And &H8000) Then MsgBox "您按的是 左边  ALT 键"
        If KeyCode = vbKeyMenu And Shift = vbAltMask And (GetAsyncKeyState(VK_RMENU) And &H8000) Then MsgBox "您按的是 右边  ALT 键"    If KeyCode = vbKeyControl And Shift = vbCtrlMask And (GetAsyncKeyState(VK_LCTRL) And &H8000) Then MsgBox "您按的是 左边  CTRL 键"
        If KeyCode = vbKeyControl And Shift = vbCtrlMask And (GetAsyncKeyState(VK_RCTRL) And &H8000) Then MsgBox "您按的是 右边 CTRL 键"
    End Sub仅供参考,测试通过环境XP+VB6