Keyboard Direkter Input

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Keyboard Direkter Input

    Hey zusammen

    Kann mir jemand verraten, wie ich die Tastatur eingaben direkt abfangen kann ohne dass sie über "Windows" gehen?

    Ich probiere ein Spiel zu programmieren. (sehr simpel gehalten) wenn ich jetzt nach rechts gehe (Pfeiltasten). Macht es nur einen Schritt, stoppt kurz und erst dann kommt das dauernd nach rechts. Wenn man die Pfeiltaste rechts hält und dann nach Oben auch noch drückt, wird der Input unterbrochen...



    Ich will einfach ein Input ohne die Windows-Verzögerung.


    Hoffe ihr habt eine Idee. Danke schon Jetzt.
    Damon

    PS: Ich habe das Vorhandene Material angehängt.

    *EXE-Anhang entfernt*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Willkommen im Forum. :thumbup:
    Tastatureingaben sind Sache des Betriebssystems.
    Dann solltest Du ein Programm unter einem Echtzeit-System schreiben. :S
    Wie wäre es, wenn Du das Key_Down-Event Deines Fenstern benutzt, nachdem Du der Form KeyPreview = True gegeben hast?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey zusammen

    Danke für den Tipp!

    Habe es nun hin bekommen, dass alles wunderbar klappt. Mein einziges Problem im Moment ist, dass ich nicht 2 Tasten gleichzeitig drücken kann. Er akzeptiert nur eine Taste gleichzeitig.

    Jemand eine Idee?

    Gruss
    Damon

    PS: Hier noch der Aktuelle Stand:

    *EXE-Anhang entfernt*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    2 Tasten gleichzeitig kannst Du mit GetAsyncKeyState abfragen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    GetAsyncKeystate

    Hey zusammen

    Danke für die schnelle Antwort.

    Jedoch scheine ich zu doof dafür zu sein. Habe es gegoogelt aber trotzdem nicht herausgefunden, wie es funktioniert. Kann mir da jmd. weiterhelfen?

    Thx
    Damon
    Ich kauf dir wirklich nicht ab, dass du gegoogelt hast. Wieso? Weil alles was du brauchst unter den ersten 3 Einträgen steht:

    VB.NET-Quellcode

    1. Declare Function GetAsyncKeyState Lib "user32.dll" ( ByVal vKey As Long ) As Long
    Quelle: vb@rchiv - GetAsyncKeyState-Funktion

    Und hier im Forum eine einfache Anwendung:

    VB.NET-Quellcode

    1. If GetAsyncKeyState(Keys.Control) AndAlso GetAsyncKeyState(Keys.D) Then
    2. MsgBox("Gedrückt")
    3. End If

    Quelle: GetAsyncKeyState: Kompletten Key abfragen

    BTW: Nenn mir deine Stichworte, nach welchen du gegoogelt hast.

    Greez Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dancger schrieb:

    GetAsyncKeyState
    Das ist VB6-Grütze.
    @Damon_Kronski: Nimm bitte .NET-kompatiblen Code:

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Class XXX
    3. <DllImport("user32.dll")> _
    4. Public Shared Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short
    5. End Function
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!