vb.net中的多个按键

时间:2012-10-10 19:10:44

标签: vb.net events keyboard

我想要做的是处理一个事件,其中最终用户用他的手掌,拳头,脸等敲击键盘。听起来很荒谬,但它将被用作高功率激光实验室的补充安全功能。我正想着看4个或更多的钥匙。有效组合的示例:

- u{f5}7hby6
- 6g3.io{alt}mn'
- p9hyi
- {tab}2{f2}56{shift}z
- {alt}{windows}\{ctrl}{f8}
- basically anything else that can be typed with a face

我尝试过这种方法,但是不起作用,因为并非所有的KeyUp或KeyDown事件都被处理,尤其是在按下多个键时。

Private keez As New List(Of Integer)

Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    keez.Add(e.KeyValue)
    If keez.Count >= 4 Then MessageBox.Show("I handled it!")
End Sub

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
    Try
        keez.Remove(AscW(e.KeyChar))
    Catch
    End Try
End Sub

Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
    keez.Remove(e.KeyValue)
End Sub

使用此方法,会不断错过密钥。我想知道是否有人知道如何处理连续按下的多个键。大多数Google搜索与标准键组合有关,它们几乎总是包含一个修饰符(ctrl,alt,shift)+一个额外的键。

1 个答案:

答案 0 :(得分:1)

我认为你不能同时处理超过4个键(例如,同时5个字母的字符不起作用) - 这是当今大多数键盘的硬件限制,即它们是如何连接的内部。支持同时按下所有按键的键盘可能非常昂贵,而且我还没有看到一个直播。您可以查看this thread以获取更多信息。还讨论了on tomshardware