Controller mit GetAsyncKeyState()

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Genesis.

    Controller mit GetAsyncKeyState()

    Hi, ich weiß zwar nicht ob das hier reinpasst aber ich denke schon...

    also mein problem ist dass ich gerne von einem Controller die knöpfe ansprechen würde...

    ich hab es jetzt mit GetAsyncState() probiert.

    erstmal der Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Timer1.Interval = 1
    5. Timer1.Start()
    6. End Sub
    7. Function GetTaste(ByVal Taste As Integer) As Boolean
    8. If GetAsyncKeyState(Taste) = -32767 Then
    9. Return True
    10. End If
    11. End Function
    12. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    13. If GetTaste(Keys.J1_B7) = True Then
    14. MessageBox.Show(" ")
    15. End If
    16. End Sub
    17. End Class


    mann kann ja ganz normal z.B. die Taste A abfragen. Also so:

    VB.NET-Quellcode

    1. If GetTaste(Keys.A) = True Then
    2. MessageBox.Show("A")
    3. End If


    jedoch kennt man den namen meiner controllertaste nicht die heißt: J1_B7

    er gibt dann als fehler das J1_B7 kein Member von System.Windows.Forms.Keys. (Logischer weiße)

    meine Frage:

    1. Kann ich meinem Computer die Taste "beibringen", also irgentwo hinzufügen?
    2. Oder soll ich den Code ganz anders machen?

    mfg Genesis
    Probiers mal damit, das sollte dir den Tastencode dafür veraten, und dann eben anstatt Keys.J1_B7 den Integer einsetzten.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Timer1.Interval = 1
    5. Timer1.Start()
    6. End Sub
    7. Function GetTaste(ByVal Taste As Integer) As Boolean
    8. If GetAsyncKeyState(Taste) = -32767 Then
    9. Return True
    10. End If
    11. End Function
    12. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    13. For i As Integer = 0 To 99999
    14. If GetTaste(i) = True And i <> 1 And i <> 13 Then
    15. MessageBox.Show(i.ToString)
    16. End If
    17. Next
    18. End Sub
    19. End Class
    hi oli-f, ich habe deinen code natürlich ausprobiert!

    dein code klappt perfekt bei meiner tastatur, jedoch nicht mit meinem controller :(
    (ich habe den hier falls es dich interressiert)

    ich habe es folgendermasen benutzt:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. If GetTaste(Keys.J1_B7 = "") = True Then
    3. MessageBox.Show(" ")
    4. End If
    5. End Sub


    ich habe versucht es probeweiße einzusetzen mit A
    Ich hatte dann If GetTaste(Keys.A = 65) = True Then dass hat aber nicht geklappt.

    wie muss ich den integer einsetzen und hast du noch eine andere idee wie ich vielleicht den integer für den controller rausbekomme?

    mfg und danke schonmal =)

    oli-f schrieb:

    VB.NET-Quellcode

    1. If GetTaste(65) = True

    danke das funktioniert, jetzt muss ich nur noch den integer für meinen conroller herausfinden.


    Manawyrm schrieb:

    wie kommste darauf, dass das mit getasynckeystate was wird?
    das gibt tastatur und maus aus, und nicht spielecontroller /gamepads-joysticks.

    wie kommst du darauf dass es sie nicht ausgibt?
    und mit was soll ich es dann machen? is jetzt nicht schlechtgemeint würde mich echt interresieren =)

    mfg Genesis
    Hi sorry, dass ich nicht geantwortet habe. Konnte die letzten Tage nicht richtig an einen Computer.

    Auf jedenfall hab ich mir das mal angeschaut. Ist das nicht für "online" Spiele? Ich möchte nur, dass der computer auf meine tasten reagiert(nichts online, nichts kompliziertes wie ein spiel)

    kennst du vielleicht noch eine andere "einfachere" methode um die tasten zu benutzen?

    mfg