2016-10-20 2 views
0

Also ich bin gerade dabei, mein A-Level-Computing-Projekt zu entwerfen, und ich muss wissen, ob VB.NET mehrere Tasten gleichzeitig drücken kann, z. B. F & J, und in der Lage sein, sie als separate Tastenanschläge zu behandeln. Ich kann irgendwo bis zu 4 Tasten gleichzeitig drücken, wenn VB.NET das nicht kann, wird mein Programm begrenzt (wenn auch nur geringfügig).Gibt es eine Grenze für die Anzahl der Tastendrucke, die VB.NET gleichzeitig registrieren kann?

Wenn dies möglich ist, behandle ich es so, als ob sie nicht gleichzeitig gedrückt würden, und prüfe beide Tasten einzeln, oder gibt es eine spezielle Art, dies zu erkennen?

Vielen Dank im Voraus.

+6

nicht sicher, VB nichts mit dem zu tun hat, seine Tastatur-Treiber und Hardware, die verantwortlich sind für Das. einige Gaming-Tastaturen zum Beispiel, können 10 Tasten gleichzeitig drücken, Standard-Tastaturen können wie 3 bis 5 Tops. – Stavm

+0

Ich stimme dem obigen Kommentar zu. Ihre Anwendung nimmt alle vom PC registrierten Schlüssel auf. Sie müssen abfangen, welche Tasten in Ihrer Anwendung gedrückt werden. – Pure

+0

Es ist eine Eigenschaft der Tastatur, genannt ["Rollover"] (https://en.wikipedia.org/wiki/Rollover_ (Schlüssel)). Man kann generell nur auf 3 Tasten zählen, danach klatschen Billige aus. Es gibt keine Möglichkeit, dies herauszufinden, außer durch Versuch und Irrtum, es hängt davon ab, wo sich die Schlüssel in der Matrix befinden. Oder durch sorgfältiges Einkaufen. Die Größe der Warteschlange hat damit nichts zu tun. –

Antwort

2

Sie den Überblick über die Tasten halten Sie gedrückt haben, und freigegeben.

Erstellen Sie ein neues winforms-Projekt, und fügen Sie ein Label hinzu. Dies sollte Ihnen einen guten Ausgangspunkt geben.

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 

enter image description here

(Die oben genannten 8 Tasten möglich durch meine anti-ghosting Tastatur, die Sidewinder X4.)

+0

danke, das wird sehr helfen. – Hado

1

Angeblich können Sie in der Registrierung überprüfen

Dim KeyboardDataQueueSize = My.Computer.Registry.GetValue(
      "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kbdclass\Parameters", 
      "KeyboardDataQueueSize", Nothing) 

https://www.google.com/search?q=keyboard+buffer+size

Verwandte Themen