Ein paar Fragen zur Tastenabfrage GetAsyncKeyState

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Sinlikez.

    Ein paar Fragen zur Tastenabfrage GetAsyncKeyState

    Hey Leute.

    Hab schon oft den gleichen Code gesehen wenn Leute Tastatureingaben abfangen wollen

    VB.NET-Quellcode

    1. For i As Integer = 0 To 255
    2. result = 0
    3. result = GetAsyncKeyState(i)
    4. If result = -32767 Then
    5. TextBox1.Text &= Chr(i)
    6. End If


    Nun hab ich dazu ein paar Fragen, da ich das schon mal überhaupt nicht verstehe^^

    1. For i As Integer = 0 To 255 : <--- ? Warum von 0 - 255?
    2. result = 0 : <--- Was bringt das? Bzw. was bewirkt das genau???
    3. result = GetAsyncKeyState(i) : <--- Was bewirkt der Befehl?
    4. Wenn das Ergebnis (If result =) -32767 ist... <---- Ich weiss nicht mal wie ich die Fragen stellen soll xD
    5. Textbox1.Text &= Chr(i) <--- Könnte man da nicht >>>Textbox1.text = Textbox1.text & i<<< schreiben?


    Sorry für die Fragen, aber mich interessiert es, wie das funktioniert

    Danke für eure Zeit ^^
    1.) Da es 256 verschiedene Zeichen gibt (zumindest im ASCII-Zeichensatz), und man jedes überprüfen will, eben von 0-255.
    2.) Die Zeile ist komplett unnötig und zeugt nur von der Ahnungslosigkeit des Autors von diesem Stückchen Code.
    3.) In dieser Zeile wird geprüft, ob die Taste, die das Zeichen i repräsentiert, gedrückt ist. Das Ergebnis der GetAsnycKeyState()-Funktion wird in result gespeichert.
    4.) Dafür muss man ein wenig mehr in die Materie eingehen:

    GetAsyncKeyState() gibt ein Short zurück. Das ist eine 2 Byte lange Zahl. Demnach hat sie 16 Bits (1 Byte = 8 Bits).
    Ist die Taste gedrückt, sind alle 16 Bits 1:

    Quellcode

    1. 1111111111111111
    Ist die Taste nicht gedrückt, sind alle 16 Bits 0:

    Quellcode

    1. 0000000000000000
    Rechnet man diese Bits in eine Zahl um, kommt entweder -32767 (alle Bits 1) oder 0 (alle Bits 0) raus. Falls du nicht weißt, wie man von Nullen und Einsen (Binärsystem) ins Dezimalsystem umrechnet, schau am besten auf Wikipedia nach.

    5.) Ja, geht auch. Ist aber länger. Und das Chr(i) ist trotzdem nötig, da ansonsten nur die Zahl angehängt werden würde und nicht das Zeichen, das sie repräsentiert. Außerdem würde bei Option Strict On ein Fehler geworfen werden.
    @haiyyu

    wieder mal danke ich dir xD

    Das mit den 255 zeichen dachte ich mir schon, aber war mir unsicher
    Bei 2. musste ich lachen ^^ weil ich da lange rumgeknobelt habe was das überhaupt bringt(?) xD
    ich kuck mir nr. 4 mal auf wikipedia an :D
    nr. 5: Stimmt! xD da wäre echt nur die zahl angezeigt worden, hätte ich garnich daran gedacht ^^!!

    wieder mal top haiyyu :D
    danke ^^
    du bist immer einer der ersten :D

    ich kuck jez ma ^^ danke!