Tastaturhook - Strg + Alt , falsche Abfrage?

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Tastaturhook - Strg + Alt , falsche Abfrage?

    Hallo.

    Und zwar geht es darum, mit Tastaturhook
    die Tastenkombi Alt + Gr abzufragen.

    Ich hab Folgendes:

    VB.NET-Quellcode

    1. Private AltGrActiveBool As Boolean = False
    2. Private Property AltGrActive() As Boolean
    3. Get
    4. Return AltGrActiveBool
    5. End Get
    6. Set(value As Boolean)
    7. If value = AltGrActiveBool Then Exit Property
    8. AltGrActiveBool = value
    9. End Set
    10. End Property
    11. Private StrgActiveBool As Boolean = False
    12. Private Property StrgActive() As Boolean
    13. Get
    14. Return StrgActiveBool
    15. End Get
    16. Set(value As Boolean)
    17. If value = StrgActiveBool Then Exit Property
    18. StrgActiveBool = value
    19. End Set
    20. End Property
    21. Private AltActiveBool As Boolean = False
    22. Private Property AltActive() As Boolean
    23. Get
    24. Return AltActiveBool
    25. End Get
    26. Set(value As Boolean)
    27. If value = AltActiveBool Then Exit Property
    28. AltActiveBool = value
    29. End Set
    30. End Property
    31. Private Sub checkforcase(B As Keys, wParam As Integer)
    32. Select Case True
    33. Case B = Keys.LControlKey AndAlso wParam = 256 : StrgActive = True
    34. Case B = Keys.RControlKey AndAlso wParam = 256 : StrgActive = True
    35. Case B = Keys.LMenu AndAlso wParam = 257 : AltActive = False
    36. Case B = Keys.LMenu AndAlso wParam = 260 : AltActive = True
    37. Case B = Keys.LControlKey AndAlso wParam = 257 : StrgActive = False
    38. Case B = Keys.RControlKey AndAlso wParam = 257 : StrgActive = False
    39. End Select
    40. Debug.WriteLine("AltGR : " & AltGrActive.ToString)
    41. AltGrActive = StrgActive AndAlso AltActive
    42. Debug.WriteLine("Strg: " & StrgActive.ToString & " Alt " & AltActive.ToString)
    43. End Sub


    Die checkcase Methode wird aufgerufen, sobald das Tastaturhook Event ausgelöst wird.

    Das Problem: Wenn ich zuerst die Alt Taste gedrückt halte und dann Strg drücke,
    klappt es.


    Wenn ich zuerst die Strg Taste gedrückt halte und dann Alt , klappt es nicht.

    Kann mir jemand sagen, woran das liegt?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Daniel Baumert“ ()

    @Daniel Baumert Mach mal Option Strict On.
    Keys.LControlKey ist kein Boolean.
    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!

    Daniel Baumert schrieb:

    Was meinst Du?
    Sorry,

    Daniel Baumert schrieb:

    Case B = Keys.LControlKey AndAlso wParam = 256
    das B = ... ist mir durch die Lappen gegangen, weil in C# wäre das ein ==.
    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!