vb.net – 如何捕获Ctrl Alt RShftKey

前端之家收集整理的这篇文章主要介绍了vb.net – 如何捕获Ctrl Alt RShftKey前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有一段时间我试图在常见的VBNET密钥处理程序下捕获Ctrl Alt右移键.
这是我的测试:
  1. If e.Control And e.Alt And e.KeyCode = Keys.Space Then
  2. MsgBox("CTRL + ALT + SPACE") ' This work
  3. End If
  4.  
  5. If e.Control And e.Shift And e.KeyCode = Keys.F10 Then
  6. MsgBox("CTRL + SHIFT + F10") ' This work
  7. End If
  8.  
  9. If e.Control And e.Alt And e.KeyCode = Keys.ShiftKey Then
  10. MsgBox("CTRL + ALT + SHIFT") ' This work
  11. End If
  12.  
  13. If e.Alt And e.Shift And e.KeyCode = Keys.LWin Then
  14. MsgBox("ALT + SHIFT + LEFT WINDOWS") ' This work
  15. End If
  16.  
  17. If e.Control And e.Alt And e.KeyCode = Keys.RShiftKey Then
  18. MsgBox("CTRL + ALT + RIGHT SHIFT") ' This don't work
  19. End If

Windows 7,WinForms,VB2008,.NET framework 2.0

为什么我在描述的情况下无法捕捉Ctrl Alt右移键?
或者,如何捕获Ctrl Alt右移键组合?

使用标准VB.NET方法无法检测Shifts之间的差异.
您必须为此挂钩Windows API:
  1. <System.Runtime.InteropServices.DllImport("user32.dll")> _
  2. Private Shared Function GetAsyncKeyState(vKey As Keys) As Short
  3. End Function
  4.  
  5. Private Sub Form2_KeyDown(sender As Object,e As KeyEventArgs) Handles Me.KeyDown
  6.  
  7. If e.Control And e.Alt And e.Shift Then
  8.  
  9. If Convert.ToBoolean(GetAsyncKeyState(Keys.LShiftKey)) Then
  10. MsgBox("CTRL + ALT + LEFT SHIFT")
  11. ElseIf Convert.ToBoolean(GetAsyncKeyState(Keys.RShiftKey)) Then
  12. MsgBox("CTRL + ALT + RIGHT SHIFT")
  13. End If
  14.  
  15. End If
  16.  
  17. End Sub

猜你在找的VB相关文章