一次可以注册多少个按键VB.NET有限制吗?
Is there a limit to how many key presses VB.NET can register at once?
所以我目前正在设计我的 A-level 计算项目,我需要知道 VB.NET 是否可以同时注册多个按键,例如 F&J,并且能够将它们视为单独的按键.我可能需要一次最多 4 个按键,所以如果 VB.NET 做不到,我的程序将受到限制(虽然只是轻微的)。
如果可能的话,我是将其视为没有同时按下并分别检查两个键,还是有特殊的检测方法?
提前致谢。
据说你可以检查注册表
Dim KeyboardDataQueueSize = My.Computer.Registry.GetValue(
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kbdclass\Parameters",
"KeyboardDataQueueSize", Nothing)
您可以跟踪按下和释放的键。
新建winforms项目,添加Label。这应该会给你一个很好的起点。
Public Class Form1
Private pressedKeys As New List(Of System.Windows.Forms.Keys)()
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If Not pressedKeys.Contains(e.KeyCode) Then pressedKeys.Add(e.KeyCode)
printCurrentKeys()
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If pressedKeys.Contains(e.KeyCode) Then pressedKeys.Remove(e.KeyCode)
printCurrentKeys()
End Sub
Private Sub printCurrentKeys()
If pressedKeys.Count > 0 Then
Me.Label1.Text = pressedKeys.
Select(Of String)(Function(k) Chr(k)).
Aggregate(Function(s1, s2) s1 & ", " & s2)
Else
Me.Label1.Text = ""
End If
End Sub
End Class
(以上8个按键是我的anti-ghosting keyboard, the Sidewinder X4实现的)
所以我目前正在设计我的 A-level 计算项目,我需要知道 VB.NET 是否可以同时注册多个按键,例如 F&J,并且能够将它们视为单独的按键.我可能需要一次最多 4 个按键,所以如果 VB.NET 做不到,我的程序将受到限制(虽然只是轻微的)。
如果可能的话,我是将其视为没有同时按下并分别检查两个键,还是有特殊的检测方法?
提前致谢。
据说你可以检查注册表
Dim KeyboardDataQueueSize = My.Computer.Registry.GetValue(
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kbdclass\Parameters",
"KeyboardDataQueueSize", Nothing)
您可以跟踪按下和释放的键。
新建winforms项目,添加Label。这应该会给你一个很好的起点。
Public Class Form1
Private pressedKeys As New List(Of System.Windows.Forms.Keys)()
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If Not pressedKeys.Contains(e.KeyCode) Then pressedKeys.Add(e.KeyCode)
printCurrentKeys()
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If pressedKeys.Contains(e.KeyCode) Then pressedKeys.Remove(e.KeyCode)
printCurrentKeys()
End Sub
Private Sub printCurrentKeys()
If pressedKeys.Count > 0 Then
Me.Label1.Text = pressedKeys.
Select(Of String)(Function(k) Chr(k)).
Aggregate(Function(s1, s2) s1 & ", " & s2)
Else
Me.Label1.Text = ""
End If
End Sub
End Class
(以上8个按键是我的anti-ghosting keyboard, the Sidewinder X4实现的)